본문 바로가기

CS 잡지식

지연 로딩(Lazy)의 단점 : (N+1) Problem과 Solution

즉시 로딩(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를 다룰 수 없다고 하셨다)