CS 잡지식
지연 로딩(Lazy)의 단점 : (N+1) Problem과 Solution
JIN_YOUNG _KIM
2023. 4. 22. 10:47
즉시 로딩(EAGER) : 연관된 엔티티를 같이 조회하기에 SQL문에서 join 연산이 일어난다.
-> 연관된 엔티티가 100개이면 100번의 JOIN 연산이 일어나기에 , 실무에서는 모~~든 조회는 [지연 로딩] 사용
(즉시 로딩에서도 위와 같은 경우를 [N+1]의 문제라고 부른다. 다만 즉시 로딩에서 발생하는 [N+1] 문제는 Lazy Loading
으로 바꾸는 것으로 해결이 된다. 우리는 여기서 Lazy Loading에서도 발생하는 [N+1] 문제를 알아 보고, 그 해결법은
Fetch Join에 대해서 알아 본다)
지연 로딩의 단점 : 아래 사이트 참조!
https://jbluke.tistory.com/382
Solution : Fetch Join을 사용!!!!
-> Fetch Join은 [지연 로딩]으로 인해 생기는 [N+1] 문제를 말끔히 해결해 주므로,
Fetch Join의 사용은 100% 필수이다.
[지연 로딩] + [Fetch Join]의 조합으로 JPA를 사용하는 것이 정석!!!
(Fetch Join을 모르면, JPA를 다룰 수 없다고 하셨다)