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);
}
'Dev' 카테고리의 다른 글
[jpa] 참조키를 이용한 1:1 양방향 연관 - Lazy Loading (0) | 2019.03.03 |
---|---|
[jpa] 참조키를 이용한 1:1 양방향 연관 (0) | 2019.03.03 |
[jpa] 참조키를 이용한 1:1 단방향 연관 (0) | 2019.03.02 |
[intellij] 자주 사용하지 않는 단축키 저장용 (0) | 2019.02.26 |
[junit5] WARNING: TestEngine with ID 'junit-jupiter' failed to execute tests 에러가 발생하는 경우 (0) | 2019.02.20 |