문제 상황
원인
최종 해결
참고자료
• JPA 공식 문서: https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#fetching • Baeldung의 JPA N+1 문제 해결 가이드: https://www.baeldung.com/hibernate-initialize-proxy-exception
fetch joinfetch join을 이용해서 join을 통해 테이블을 선 조인한 후에 행을 읽어오기 때문에 1회의 쿼리문으로 조회 가능하다
fetch join 조건은 일반 SQL문의 inner join 조건 on 은 조인(Join)을 통해 데이터를 가져온다는 점에서 같은 맥락이다.
INNER JOIN: SQL에서 테이블 간의 관계를 이용해 두 테이블을 결합하고, 결합된 데이터를 반환. SQL의 데이터 조작 방식FETCH JOIN: JPA에서 연관된 엔티티를 즉시 로딩하기 위한 목적으로 사용. 연관 엔티티를 한 번의 쿼리로 즉시 로딩하는 기능을 담당.해결 상황 예시
상황: 뮤지컬의 특정 일자에 잔여 좌석들을 조회하는 쿼리
테이블 매핑 관계: Seat - Schedule - Musical 가 비식별 관계로 묶여 있음