SpringBoot (2) 썸네일형 리스트형 [JPA] EntityGraph를 더 잘 써보자 EntityGraph를 이용해서 쿼리를 조금이라도 더 줄여보자 Reservation Entity @Entity @Getter @NoArgsConstructor public class Reservation extends BaseEntity { @ManyToOne(fetch = FetchType.LAZY) private Product product; private String uniqueId; @ManyToOne(fetch = FetchType.LAZY) private Member member; private String phoneNumber; private LocalDateTime checkIn; private LocalDateTime checkOut; private String status; privat.. [JPA] @OneToOne 관계에서 EntityGraph 사용하기 JPA에서 OneToOne 맵핑 시 기본 Fetch Type은 Eager입니다. Eager는 연관관계가 있는 필드를 함께 조회합니다. 하지만 이러한 동작은 원치 않을 때도 실행되기 때문에 흔히 말하는 N+1 문제를 발생시킵니다. 정확하게 말하자면 FetchType을 LAZY로 설정하여도 테이블을 조회할 때 외래 키를 갖고 있는 테이블(연관 관계의 주인)에서는 지연로딩이 동작하지만, mappedBy로 연결된 반대편 테이블은 Eager로 동작하기 때문에 지연로딩이 동작하지 않고 N + 1 쿼리가 발생합니다. N+1 문제란? 연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 개수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1 문제라.. 이전 1 다음