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

[ 주의 사항 ]
연관 매핑은 반드시 필요할 때만 사용!
조회는 CQRS로 구현!
가능하면 Embeddable 사용!
1-1 단방향 연관
Member (1) : Car (N) 관계의 테이블이 있다고 가정하자.
Member 의 자동차 목록을 가져오기 위해선 List< Car > cars 필드값이 필요하다.
이를 Member -> Car 1-1 단방향 연관라고 한다.
1-1 단방향 연관 매핑 방식
- 참조키(외래키) 방식
- 식별자 공유 방식
참조키(외래키) 방식

사용법

- 단방향 필드에
@OneToOne 와 @JoinColumn 을 사용하면 된다.
- JoinColumn의 name은 참조키로 사용할 칼럼의 이름을 넣으면 된다.
저장
-> user를 파라미터로 주었을 경우

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

-> 테이블 확인

조회

-> em.find() 시 쿼리문

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

식별자 공유 방식

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

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

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