최대 1 분 소요

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

이 경우는 Member, Team 을 가끔 같이 쓰는 경우 좋다.

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

프록시와 즉시로딩 주의!!!

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

태그: ,

카테고리:

업데이트:

댓글남기기