실무에서는 지연로딩
- 즉시로딩 EAGER
(진짜) 객체를 다 가져옴
Member조회 시 항상 Team도 조회하는 것
각 member 객체마다 서로 다른 team에 소속되어 있다면..?
Member 가져오는 쿼리와 함께 각 team 정보를 가져오기 위한 조인쿼리들이 나갈 것이다.
Member 데이터만 필요한 상황에서는 불필요한 로직
이처럼 즉시 로딩을 적용하면 예상하지 못한 SQL이 발생
프록시와 지연로딩 LAZY
지연로딩 LAZY는 프록시 객체로 조회
연관관계마다 다른 로딩 설정
- [ @ManyToOne, @OneToOne ]
기본이 즉시 로딩
꼭 LAZY로 설정해주자
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn
private Team team;
- [ @OneToMany, @ManyToMany ]
기본이 지연 로딩