즉시로딩과 지연로딩은 JPA를 사용핼때 데이터를 언제&어떻게 불러올지 결정하는 두 전략이다!
📌즉시로딩이란? (EAGER)
데이터를 조회할때 연관된 모든 객체의 데이터를 "한번에" 불러오는 방법
ex) 게시글을 불러올때 해당 게시글과 연관된 댓글도 모두 가져온다
✚ 장점) 한번의 쿼리로 모든 데이터를 가져올 수 있다
✚ 단점) 필요하지 않는 데이터까지 가져와진다
예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다
JPQL실행시 N+1의 문제 자주 발생
@OneToMany(fetch=FetchType.LAZY)
private Order order;
📌지연로딩이란? (LAZY)
데이터를 실제로 사용할 때까지 불러오지 않는 방법
ex) 게시글을 불러올때 게시글만 먼저 로드하고 댓글은 필요로할때만 가져옴
✚ 장점) 시스템 리소스 절약
✚ 단점) 데이터에 접근할 떄마다 추가적인 쿼리가 필요함 -> 성능 저하 발생가능
✅ 실무에서는 모든 연관관계는 지연로딩(LAZY)으로 설정해야한다!!!!