Dev

[jpa] 참조키를 이용한 1:1 단방향 연관 - Lazy Loading

Ryan Woo 2019. 3. 3. 15:14

2. [jpa] 1:1 단방향 연결 - Lazy Loading

MembershipCard 조회시 Member 에 엑세스 하지 않는다면 Lazy Loading 을 사용할 수 있다.

public class MembershipCard {

@Id
@Column(name = "card_number")
private String number;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_email")
private Member owner;

@Temporal(TemporalType.DATE)
@Column(name = "expiry_date")
private Date expiryDate;

protected boolean enabled;
}
@Test
public void 참조키를이용한일대일단방향연관의레이지로딩() {
// 1. 멤버쉽카드에 오너를 할당하여 생성
MembershipCard membershipCard = createMembershipCardWithOwner();

// 2. 멤버쉽 카드 조회
Optional<MembershipCard> getCard = membershipCardRepository.findById(number);
// 이번에는 아우터 조인이 걸리지 않는다.

// 3. 멤버십 카드의 오너를 엑세스하면 이 시점에 select 쿼리가 실행되거나 프록시 객체를 활용. -> Lazy Loading
Member owner = getCard.get().getOwner();

assertThat(owner.getEmail()).isEqualTo(email);
}