JPA: 자바 표준의 ORM JPA는 자바 표준의 ORM으로 객체 지향 프로그래밍과 관계형 데이터베이스 간의 간극을 줄이기 위한 기술입니다. 프로그래밍 언어(Java)는 객체지향 언어이고, SQL은 객체지향이 아니기 때문에 객체를 RDB에 저장할 때 개념적으로 불일치가 발생합니다. ORM(Object-Relation Mapping)을 통해 개발자가 클래스를 작성하면 테이블 간의 매핑을 통해 객체를 데이터베이스에 저장하고 조회할 수 있고, 객체 지향적인 방식으로 데이터베이스를 조작할 수가 있습니다. 이를 통해 객체와 데이터베이스 간의 변환 작업도 최소화되며 개발자는 비즈니스 로직에 집중할 수 있게 됩니다. JPA(Java Persistence API)는 ORM의 핵심 원칙을 구현한 Java 표준입니다. 자..
N+1 문제 연관 관계에서 발생하는 문제로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수 (N) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오는 것을 N+1 문제라고 합니다. 1번의 쿼리로 N개의 엔티티를 조회(1번) 엔티티에 연관된 데이터를 가져오기 위해 추가적인 쿼리를 실행(N번) 예제) User, Order 엔티티 사용자(User) 모두를 조회하기 위해 쿼리를 하나 보냅니다. → 1번 이때 사용자마다 갖고 있는 주문(Order)에 대한 정보를 가져오기 위해 추가적인 쿼리를 날립니다. User1의 주문, User2의 주문, ..., UserN의 주문 → N번 총 N+1개의 쿼리를 날리게 됩니다. N+1 문제는 즉시로딩 때문인가? fetch = FetchType.EAGER..