개념
- 연관된 엔터티를 실제 사용 시점까지 DB에서 가져오지 말고 미루는 방식
- 반대 EADER 연관된 엔티티를 즉시 가져오는 방식
@Entity
public class Member {
@Id
private Long id;
@OneToMany(mappedBy = "member", fetch = FetchType.LAZY)
private List<Order> orders = new ArrayList<>();
}
- FetchType.LAZY → Member 객체만 조회 시 orders는 DB에서 가져오지 않음
- 실제로 member.getOrders()를 호출할때 DB에서 가져옴
- 장점
- 불필요한 데이터 조회 방지해서 성능 향상
- 단점
- 트랜젝션 밖에서 호출하면 LazyInitializationException발생가능