-
[JPA] 즉시 로딩과 지연 로딩인프런 - 스프링/JPA 프로그래밍 - 기본편 2023. 11. 28. 10:51
- 프록시 초기화 시점은 정확하게 그 객체의 메서드를 호출할 때이다. 단순히 그 객체를 가져오는 부분에서는 초기화가 안된다.
- 즉시 로딩은 JPQL에서 N + 1 문제를 일으킨다. 예를 들어서 회원과 팀이 N:1 관계에서 즉시 로딩으로 설정되었을 때 회원을 조회했을 때 10명이 조회되면 최초 쿼리 1개와 회원 10명의 팀을 각각 세팅하는 쿼리 10개가 추가적으로 나가는 상황이 발생하여 N + 1 문제라고 지칭하는 것이다. (주의할 점은 JPQL이 아닌 em.find로 조회하는 경우 조인을 하여 한번에 가져온다.)
- 지연 로딩으로 설정하여도 팀이 필요한 시점에 N개 만큼 추가적으로 쿼리가 날라가는 것은 동일하다. N+1 문제를 해결하는 대안은 일단 총 3가지 정도가 있다.
N+1 문제 해결하는 방법 3가지
- 일단 모든 연관관계를 지연로딩으로 설정한다. JPQL의 패치조인을 이용한다.
- 엔티티 그래프
- 배치 사이즈
출처: 인프런 김영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편
https://www.inflearn.com/course/ORM-JPA-Basic
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자
www.inflearn.com
'인프런 - 스프링 > JPA 프로그래밍 - 기본편' 카테고리의 다른 글
[JPA] 값 타입 (0) 2023.11.30 [JPA] 영속성 전이(CASCADE)와 고아 객체 (0) 2023.11.29 [JPA] 프록시 (0) 2023.11.27 [JPA] Mapped Superclass - 매핑 정보 상속 (0) 2023.11.27 [JPA] 상속관계 매핑 (0) 2023.11.27