본문 바로가기

JPA

연관관계 매핑

회원과 팀이 다대일 관계에 있다고 가정

객체를 테이블에 맞추어 모델링(식별자로 다시 조회, 객체 지향적인 방법 X)

- 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다.

- 객체는 참조를 사용해서 연관된 객체를 찾는다.

객체스럽지가 않다

단방향 연관관계

객체의 참조와 테이블의 외래 키를 매핑
연관관계 저장

 

참조로 연관관계 조회(Member를 통해서)

양방향 연관관계와 연관관계의 주인

 

양방향으로 연관관계를 설정하면 반대 방향으로 객체를 탐색해도 가능하다.

 

연관관계의 주인과 mappedBy

양방향 매핑 규칙

- 객체의 두 관계 중 하나를 연관관계의 주인으로 지정

- 연관관계의 주인만이 외래 키를 관리(등록, 수정)

- 주인이 아닌 쪽은 읽기만 가능

- 주인은 mappedBy 속성 사용 x

- 주인이 아니면 mappedBy 속성으로 주인 지정

- 외래 키가 있는 곳을 주인으로 지정

 

 

연관관계 주인이 아닌 곳에서 처리하면 값이 들어가지 않는다.

 

연관관계 주인 쪽에서 처리 할 때는 정상적으로 처리

 

 

양방향 매핑할 시 양쪽에 값을 세팅해주어야 한다.

- 순수 객체 상태를 고려해서 항상 양쪽에 값을 설정하자

- 연관관계 편의 메소드를 만들자

(1) Member 클래스에서 넣어주는 방법

 

어디에서 값을 넣어주는건 정해서 넣으면 됨(상황에 맞게 설정)

(2) Team 클래스에서 넣어주는 방법

 

정리

- 단방향 매핑만으로도 이미 연관관계는 매핑은 완료

- 양방향 매핑은 반대 방향으로 조회 기능이 추가

 

 

출처 - www.inflearn.com/course/ORM-JPA-Basic

'JPA' 카테고리의 다른 글

[JPA] 지연 로딩과 즉시 로딩  (2) 2021.01.09
[JPA] 프록시란?  (0) 2020.12.23
상속관계 매핑  (0) 2020.12.22
엔티티 매핑  (1) 2020.12.21
영속성 관리  (1) 2020.12.21