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 |