JPA 기초) 14 엔티티 간 1-1 단방향 연관 매핑

meteorfish·2022년 12월 1일

JPA&SpringJPA기초

목록 보기
14/18

본 강의는 JPA & Spring Data JPA 기초 강의 공부용 정리입니다.


[ 주의 사항 ]

연관 매핑은 반드시 필요할 때만 사용! 조회는 CQRS로 구현! 가능하면 Embeddable 사용!

1-1 단방향 연관

Member (1) : Car (N) 관계의 테이블이 있다고 가정하자.
Member 의 자동차 목록을 가져오기 위해선 List< Car > cars 필드값이 필요하다.
이를 Member -> Car 1-1 단방향 연관라고 한다.

1-1 단방향 연관 매핑 방식

  1. 참조키(외래키) 방식
  2. 식별자 공유 방식

참조키(외래키) 방식

사용법

  • 단방향 필드에 @OneToOne@JoinColumn 을 사용하면 된다.
  • JoinColumn의 name은 참조키로 사용할 칼럼의 이름을 넣으면 된다.

저장

-> user를 파라미터로 주었을 경우

-> null을 파라미터로 주었을 경우

-> 테이블 확인

조회

-> em.find() 시 쿼리문

  • find() 시 jpa는 EAGER 방식을 통해 모두 한번에 객체를 가져온다.
  • 이는 @OneToOne 애노테이션에 설정되어 있기 때문이다. (아래 코드 참조)


식별자 공유 방식

  • user와 best_pick 모두 같은 내용의 이메일을 PK로 가지고 있을 경우, 어떻게 연관 매핑을 할까?

사용법

  • 참조키 방식의 JoinColumn 대신 @PrimaryKeyJoinColumn을 사용한다.
  • PrimaryKeyJoinColumn#name에는 user테이블을 참조할 때 사용할 칼럼을 지정해주면 된다.

저장

  • persist() 시, EAGER 방식으로 모두 한번에 조회를 한다.
  • 마지막 코드를 보면 이메일 또한 BestPick의 생성자에 포함되어 있다.

0개의 댓글