3. [jpa] 1:1 양방향 연결
Member 측에서도 MemebershipCard 정보를 갖기 위해 연결 정보를 설정
public class Member {
@Id
private String email;
private String name;
@Temporal(TemporalType.DATE)
private Date createdDate;
@OneToOne(mappedBy = "owner")
private MembershipCard membershipCard;
}
@Test
public void 참조키를이용한일대일양방향연관() {
// 1. 생성된 멤버는 아직 MembershipCard 가 존재하지 않음
Optional<Member> member = memberRepository.findById(email);
assertThat(member.get().getMembershipCard()).isNull();
// 2. 멤버쉽 카드에 오너를 할당하여 생성 - 레이지 로딩
MembershipCard membershipCard = createMembershipCardWithOwner();
// 레이지 로딩이기 때문에 쿼리에 조인은 걸리지 않음
Optional<MembershipCard> getCard = membershipCardRepository.findById(number);
// 3. 멤버에 멤버십 카드 연결
member.get().setMembershipCard(membershipCard);
// 4. 멤버 재조회 - 즉시로딩, 멤버십 카드와 아우터 조인이 걸림
Optional<Member> getMember = memberRepository.findById(email);
assertThat(getMember.get().getMembershipCard().getNumber()).isEqualTo(number);
}
'Dev' 카테고리의 다른 글
[jpa] 주요키를 공유하는 일대일 단방향 연관 (0) | 2019.03.05 |
---|---|
[jpa] 참조키를 이용한 1:1 양방향 연관 - Lazy Loading (0) | 2019.03.03 |
[jpa] 참조키를 이용한 1:1 단방향 연관 - Lazy Loading (0) | 2019.03.03 |
[jpa] 참조키를 이용한 1:1 단방향 연관 (0) | 2019.03.02 |
[intellij] 자주 사용하지 않는 단축키 저장용 (0) | 2019.02.26 |