연관관계의 주인과 mappedBy
- mappedBy 는 JPA 학습 중에 어려운 개념으로 처음 학습시 이해하기 어려울 수 있다. - 꾸준히 공부 할 것(코드를 쳐보는 게 더 도움 될 듯)
- 객체와 테이블간에 연관관계를 맺는 차이를 이해해야 한다
객체와 테이블이 관계를 맺는 차이
객체 연관관계는 2개로 ex) 회원 -> 팀 (단방향) / 팀 -> 회원 (단방향)
테이블 연관관계는 1개 ex) 회원 <-> 팀의 연관관계 (양방향)
객체의 양방향 관계
- 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단방향 관계 2개다.
- 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 함
// A - > B
class A {
B b;
}
// B - > A
class B {
A a;
}
- 테이블은 외래 키 하나로 두 테이블의 연관관계를 관리
- MEMBER.TEAM_ID 외래 키 하나로 양방향 연관관계 가짐(양쪽으로 조인할 수 있기 떄문)
연관관계의 주인
- 객체의 두 관계중 하나를 연관관계의 주인으로 지정
- 연관관계의 주인만이 외래 키를 관리
- 주인인 아닌쪽은 읽기만 가능
- 주인은 mappedBy 속성 사용 x
- 주인이 아니면 mappedBy 속성으로 주인 지정
연관관계의 주인을 정할 때는
- 외래키가 있는 곳을 주인으로 정할 것
양방향 연관관계 주의
- 순수 객체 상태를 고려해서 항상 양쪽에 값을 설정하자
- 연관관계 편의 메소드를 생성하자
- 양방향 매핑시에 무한 루프를 조심하자
양방향 매핑 정리
- 단방향 매핑만으로도 이미 연관관계 매핑은 완료
- 양방향 매핑은 반대 방향으로 조회(객체 그래프 탐색) 기능이 추가된 것 뿐
- JPQL에서 역방향으로 탐색할 일이 많음
- 단방향 매핑을 잘 하고 양방향은 필요할 때 추가해도 됨
[출처] 해당 내용은 김영한 강사님의 인프런 강의를 학습하며 복습을 위해 정리한 글입니다. - https://www.inflearn.com/course/ORM-JPA-Basic
'Spring > JPA' 카테고리의 다른 글
| [JPA] 상속관계 매핑 (0) | 2023.03.05 |
|---|---|
| [JPA] 연관관계 매핑의 종류 (0) | 2023.03.05 |
| [JPA] EntityMapping / 연관관계 매핑 1 (0) | 2023.03.04 |
| [JPA] 영속성 컨텍스트 (0) | 2023.03.03 |
| [JPA | 전체적인 흐름 키워드 위주로 정리] JPA는 무엇인가? (0) | 2023.03.03 |