연관된 엔티티를 필요할 때 로딩.
성능 최적화가 가능하지만, 데이터 접근 시 추가 쿼리가 발생할 수 있음.
기본적으로 JPA에서 사용하는 방식.
N+1 문제 발생 가능.
연관된 엔티티를 즉시 로딩.
하나의 쿼리로 연관 데이터를 모두 가져오지만, 데이터가 많으면 성능에 부담이 될 수 있음.
한 번의 쿼리로 모든 데이터를 가져옴.
간단하게 보면 Lazy는 필요할 때 조회, Eager는 즉시 조회
Lazy Loading (지연 로딩)은 예를 들어 Member를 조회할 때, 그 Member의 orders 데이터가 필요할 때만 그 데이터를 조회. 즉, orders 데이터를 자동으로 조회하지 않고, 사용자가 orders에 접근할 때 그때 조회.
Eager Loading (즉시 로딩)은 예를 들어 Member를 조회할 때, 그 Member와 관련된 orders도 즉시 같이 조회. 즉, Member를 조회하면서 orders도 바로 함께 조회되게끔 설정하는 방식.
실무에서는 Lazy와 Eager 로딩을 적절히 사용해야 함. 연관된 데이터를 로딩하는 방식을 잘 선택하면 성능 최적화에 많은 도움이 됨. Lazy 로딩을 기본으로 사용하고, 필요할 때 Eager 로딩이나 Fetch Join으로 최적화하는 방식이 일반적. N+1 문제를 피하려면 Fetch Join을 활용하는 걸 추천.