728x90
객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다.
- 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다.
- 객체는 참조를 사용해서 연관된 객체를 찾는다.
- 테이블과 객체 사이에는 이런 큰 간격이 있다.
연관관계 매핑 시 고려사항 3가지
- 다중성 (잘 모를 경우 반대편을 생각하면 된다, 대칭성이 있기 때문에)
- 다대일: @ManyToOne
- 일대다: @OneToMany
- 일대일: @OneToOne
- 다대다: @ManyToMany (실무에서는 사용하지 못한다)
- 방향 (단방향, 양방향)
- 참조용 필드가 있는 쪽으로만 참조 가능
- 한쪽만 참조하면 단방향
- 양쪽이 서로 참조하면 양방향
- 연관관계의 주인
- 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음
- 객체 양방향 관계는 A->B, B->A처럼 참조가 2군데
- 객체 양방향 관계는 참조가 2군데 있음. 둘 중 테이블의 외래 키 를 관리할 곳을 지정해야 함
- 연관관계의 주인: 외래 키를 관리하는 참조
- 주인의 반대편: 외래 키에 영향을 주지 않음, 단순 조회만 가능
다대일 단방향 [N : 1]

- DB에는 항상 사 쪽에 외래키가 존재해야 설계가 맞는 것이다.
- 가장 많이 사용하는 연관관계
- 다대일의 반대는 일대다

- 반대 Team에는 Member를 참조하는 부분이 존재하지 않는다(단방향이라서)
다대일 양방향 [N : 1]

- 외래 키가 있는 쪽이 연관관계의 주인
- 양쪽을 서로 참조하도록 개발

- 양방향이기 때문에 Team에서도 참조하는 부분이 생기게 되었고, 연관관계의 주인을 외래키가 존재하는 Member로 설정하면서 team의 members는 읽기 전용만 가능하도록 mappedBy를 설정해둔다
다대일 양방향 정리
- 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단 방향 관계 2개다.
- 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다.
- 외래 키가 있는 쪽이 연관관계의 주인
- 양쪽을 서로 참조하도록 개발
728x90
'자바 ORM 표준 JPA 프로그래밍(인프런)' 카테고리의 다른 글
| Ch06. 다양한 연관관계 매핑 - 일대일 [1:1] (0) | 2021.12.13 |
|---|---|
| Ch06. 다양한 연관관계 매핑 - 일대다 [1:N] (0) | 2021.12.13 |
| Ch05. 연관관계 매핑 기초 - 실전 예제(연관관계 매핑 시작) (0) | 2021.12.12 |
| Ch05. 연관관계 매핑 기초 - 양방향 연관관계와 연관관계의 주인(주의점) (0) | 2021.12.12 |
| Ch05. 연관관계 매핑 기초 - 양방향 연관관계와 연관관계의 주인(기본) (0) | 2021.12.12 |