
1. 양방향 매핑
2. 양방향 매핑
• mappedBy = JPA의 멘탈붕괴 난이도
• mappedBy는 처음에는 이해하기 어렵다.
• 객체와 테이블간에 연관관계를 맺는 차이를 이해해야 한다.
1) 객체와 테이블이 관계를 맺는 차이
• 객체 연관관계 = 2개
회원 -> 팀 연관관계 1개(단방향)
팀 -> 회원 연관관계 1개(단방향)
• 테이블 연관관계 = 1개
회원 <-> 팀의 연관관계 1개(양방향)
• 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단
뱡향 관계 2개다.
• 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어
야 한다.
• A -> B (a.getB())
• B -> A (b.getA())
class A {
B b;
}
class B {
A a;
}
2) 테이블의 양방향 연관관계
• 테이블은 외래 키 하나로 두 테이블의 연관관계를 관리
• MEMBER.TEAM_ID 외래 키 하나로 양방향 연관관계 가짐(양쪽으로 조인할 수 있다.)
SELECT *
FROM MEMBER M
JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID
SELECT *
FROM TEAM T
JOIN MEMBER M ON T.TEAM_ID = M.TEAM_ID
3) 둘 중 하나로 외래 키를 관리해야 한다.
4) 연관관계의 주인(Owner)
양방향 매핑 규칙
- 객체의 두 관계중 하나를 연관관계의 주인으로 지정
- 연관관계의 주인만이 외래 키를 관리(등록, 수정)
- 주인이 아닌쪽은 읽기만 가능
- 주인은 mappedBy 속성 사용X
- 주인이 아니면 mappedBy 속성으로 주인 지정
5) 연관관계의 주인(Owner)
- 외래 키가 있는 있는 곳을 주인으로 정해라
- 여기서는 Member.team이 연관관계의 주인
출처 : 김영한, 자바 ORM 표준 JPA 프로그래밍 - 기본편
'JPA' 카테고리의 다른 글
연관관계 매핑 시작 (0) | 2022.07.03 |
---|---|
양방향 매핑시 가장 많이 하는 실수 (0) | 2022.07.01 |
단방향 연관관계 (0) | 2022.07.01 |
요구사항 분석과 기본 매핑 (0) | 2022.07.01 |
기본키 매핑 (0) | 2022.06.30 |