즉시 로딩과 지연 로딩


이런식으로 fetch = FetchType.LAZY 를 사용하면 멤버를 조회할 때 Team 은 프록시 객체(가짜 객체)로 조회한다. 즉, db에서 member 만 조회해온다.

이 경우는 Member, Team 을 가끔 같이 쓰는 경우 좋다.
하지만 매번 Member, Team 을 같이 쓰는 경우는 즉시 로딩 EAGER 를 사용한다.

프록시와 즉시로딩 주의!!!
- 가급적 지연 로딩만 사용 (특히 실무에서)
- 즉시 로딩을 적용하면 예상하지 못한 SQL이 발생
- 즉시 로딩은 JPQL에서 N+1 문제를 일으킨다.
- @ManyToOne, @OneToOne은 기본이 즉시로딩 -> LAZY설정
- @OneToMany, @ManyToMany 는 기본이 지연로딩

댓글남기기