개념정리 6

[개념정리] N+1 문제란? | N+1 문제 해결방법 | 단위 테스트와 통합 테스트의 차이점과 각각의 장단점 | QueryDSL을 사용하여 복잡한 동적 쿼리를 작성하는 방법 | 데이터베이스에서의 트랜잭션

N+1 문제란? 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 개수만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오는 현상   해결 방법 연관관계에 대한 설정이 필요하면 성능 최적화를 위해 즉시 로딩을 사용하는 것이 아니라 지연 로딩을 사용하여 Fetch Join을 사용해야 한다. Fetch Join이란?JPQL을 사용해서 DB에서 데이터를 가져올 때 처음부터 연관된 데이터를 같이 가져오는 방법을 사용@EntityGraph 어노테이션이나 @Query 어노테이션을 사용          단위테스트, 통합테스트의 용도 단위 테스트는 목 객체를 이용해서 외부 의존성 제거하고 테스트 대상 코드만 검증하는 반면에 통합 테스트는 실제 환경에서의 동작을 검증하기 위해서 실제 데이터베이스나 외부 A..

개념정리 2024.10.11

[개념정리] JPA 동작 매커니즘 | JPA 동작 원리

JPA의 동작 원리  JPA의 동작 원리영속성 컨텍스트 안에 있는 1차 캐시에 Primary Key 값을 KEY로 저장하고 commit이나 flush가 일어날 때 DB에 영구적으로 저장되며 영속성 컨텍스트는 소멸하는 방식JPA는 엔티티 매니저를 생성하고 CRUD 작업을 할 수 있다.   변경 감지 영속성 컨텍스트에서 값을 조회하면 해당 객체가 영속 엔티티 성질을 가진다.그러면 조회 시 1차 캐시는 저장된 상태일 것이고, 이때 1차 캐시에 저장될 때는 스냅샷이 함께 저장된다.값이 commit이나 flush를 통해 변경된다면 호출되는 시점에 스냅샷과 엔티티를 비교하여 변경사항이 발생하면 쓰기지연 SQL 저장소에 update 쿼리문을 날려서 이후에 DB에 반영하는 변경 감지 매커니즘을 가지고 있다.

개념정리 2024.10.11

[개념정리] 지연 로딩(LAZY loading)과 즉시 로딩(EAGER loading)의 개념 | 지연 로딩과 즉시 로딩의 장단점

지연 로딩과 즉시 로딩의 개념 JPA에서 지연 로딩과 즉시 로딩은 데이터베이스에서 데이터를 추출하는 방식입니다.지연 로딩은 실제로 데이터가 필요할 때 데이터를 가져오는 방식입니다.즉시 로딩은 데이터를 요청할 때 즉시 관련된 데이터를 모두 가져오는 방식입니다.   지연 로딩의 장단점 지연 로딩의 장점은 필요할 때만 데이터를 가져오고, 불필요한 데이터를 로딩하지 않기 때문에 메모리 사용량을 줄일 수 있다는 것입니다.지연 로딩의 단점은 데이터 접근 시 추가적인 데이터베이스 쿼리가 발생하여 응답 시간이 길어질 수 있기 때문에 성능 저하가 발생할 수 있다는 것입니다.    즉시 로딩의 장단점 즉시 로딩의 장점은 데이터를 한번에 가져와 미리 로딩하기 때문에 데이터 접근 시 추가적인 데이터베이스 쿼리가 발생하지 않는..

개념정리 2024.10.07

[개념정리] RESTful API | 적절한 관심사 분리 | Setter | NoSQL & RDBMS | 객체지향 프로그래밍

RESTful한 API를 설계하는 장점은? 꼬리질문 - 실제로 RESTful한 API를 설계하면서 느낀 장점 1. API란 무엇인가?  * 응용 프로그램들이 서로 소통하기 위한 방법을 정의하는 규약입니다. * 다른 소프트웨어 시스템이 정보를 교환하고, 기능을 활용할 수 있도록 하는역할을 담당합니다. 예를 들어 배달 어플로 음식점에서 음식을 주문하려고 합니다. 이때 손님은 음식점에게 주소, 메뉴 등의 자원을 전달해주어야 하는데 이 전달을 해주는 역할이 배달 어플, 즉 API라고 할 수 있습니다. 2. REST란? * 서버와 클라이언트 간에 데이터를 쉽게 주고 받을 수 있도록 하는 아키텍쳐 스타일입니다. * HTTP 위에서 별도의 전송 계층없이 전송하는 아주 간단한 인터페이스입니다. * 자원(문서, 이미지,..

개념정리 2024.09.03

[개념정리] 자바 프로그램 실행 과정 및 기본 구조 | JVM 구조

1. 자바 프로그램 실행 과정 자바 파일을 컴파일러가 해석하면서 자바 바이트 코드로 번역을 합니다.번역된 자바 바이트 코드를 JVM이 읽고 실행합니다. Java 바이트 코드란?: JVM이 이해할 수 있는 언어로 번역된 자바 소스 코드를 말합니다. 바이트라는 이름이 붙은 것은 변환되는 코드의 명령어 크기가 1바이트라서 바이트 코드라고 합니다. JVM이란?: Java Virtual Machine의 줄임말입니다. Write once, run everywhere 즉, OS마다 따로 코드를 작성해야 하는 번거로움 없이 코드를 짜면 어떤 운영체제에서든, 어떤 하드웨어에서든 실행될 수 있게 해주는 것이 JVM입니다.: 예를 들어, C로 짠 프로그램은 바로 기계어로 컴파일하믈 하드웨어 기종에 맞게 컴파일 해주어야 합니..

개념정리 2024.08.31

[개념정리] RESTful API | 적절한 관심사 분리 | Setter 사용 | NoSQL과 RDBMS | 객체지향 프로그래밍의 정의와 활용

1-1. RESTful한 API의 개념RESTful API는 Representational State Transfer의 약자로, 웹 표준을 활용하여 시스템 간의 상호 운용성을 제공하는 방법입니다. REST는 자원(Resource)의 표현(Representation)에 의한 상태 전달을 의미하며, 웹의 기본적인 기술과 프로토콜을 사용합니다.왜냐하면 RESTful API는 HTTP 프로토콜을 기반으로 하며, 웹에서 사용되는 기술과 규약을 그대로 활용하기 때문입니다. 이를 통해 웹 어플리케이션 또는 서비스 간에 정보를 쉽게 주고 받을 수 있습니다.RESTful API의 핵심 원칙에는 자원의 식별, 메시지를 통한 자원의 조작, 자기 서술적 메시지, 애플리케이션 상태의 엔진으로서의 하이퍼미디어 등이 있습니다.이러..

개념정리 2024.08.27