JPA

지연 로딩(Lazy Loading) - feat. 프록시

쿠카이든 2022. 6. 14. 10:02
728x90
  • 지연 로딩을 사용하려면 @ManyToOne의 fetch 속성을 FetchType.Lazy로 지정한다.
@Entity
public class Member {  //지연 로딩 설정
    //...
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "TEAM_ID")
    private Team team;
    //...
}
Member member = em.find(Member.class, "member1");  //지연 로딩 실행 코드
Team team = member.getTeam();  //객체 그래프 탐색
team.getName();  //팀 객체 실제 사용

지연로딩. 회원을 조회할 때 팀 지연 로딩

  • em.find(Member.class, "member1")를 호출하면 회원만 조회하고 팀은 조회하지 않는다.
  • 대신에 같이 조회한 회원의 team 멤버변수에 프록시 객체를 넣어둔다.
Team team = member.getTeam(); //프록시 객체
  • 반환된 팀 객체는 프록시 객체다. 이 프록시 객체는 실제 사용될 때까지 데이터 로딩을 미룬다. 그래서 지연 로딩이라 한다.

출처 : JAVA 표준 ORM JPA 프로그래밍 (저자 김영한)

728x90

'JPA' 카테고리의 다른 글

프로젝션 NEW 명령어  (0) 2022.06.14
객체지향 쿼리 소개(feat. JPQL)  (0) 2022.06.14
임베디드 타입(@Embeddable, @Embedded)  (0) 2022.06.13
@MappedSuperclass  (0) 2022.06.13
다대일 양방향 [N:1, 1:N] 관계  (0) 2022.06.13