1. 단방향 연관관계
Member(N)와 Team(1)
- 회원
- ManyToOne
- JoinColumn(name = “TEAM_ID”)
2. 양방향 연관관계와 연관관계의 주인
그렇다면, Team에서 Member 호출은?
Team에서, List<Member> members를 어떻게 호출할 수 있을까.
- Team에 List<Member> members 를 OneToMany로 추가한다.
- @OneToMany(mappedBy = "team") private List<Member> members = new ArrayList<>();
- DB상 테이블은 변하지 않는다.
1. 연관관계의 주인 = 외래키 관리자
- 주인(N) @JoinColumn(name = "TEAM_ID") : 외래키를 가짐
- 주인 : ManyToOne, OneToOne
- 주인X(1) : mappedBy 속성으로 주인 지정
2. 양방향 매핑시 주로 하는 실수
- 외래키 값을 넣지 않음
- mappedBy적용한 곳에도 값을 넣어주는 것이 맞다. (순수 객체지향처럼)
- getter/setter를 관례로 setter를 잘 안쓴다(네이밍으로). changeTeam을 쓰는 편
- public void changeTeam(Team team) { this.team = team; team.getMembers().add(this); }
3. 정리
- 단방향 매핑만으로도 이미 연관관계 매핑은 완료
- 양방향 매핑은 반대방향의 조회기능이 추가된것 뿐
- 단방향 매핑을 잘 하고 양방향은 필요할 때 추가해도 됨
'공부 > Spring' 카테고리의 다른 글
[JPA] 프록시와 연관관계 관리(지연로딩) (0) | 2022.07.02 |
---|---|
[JPA] 다양한 연관관계 매핑 (0) | 2022.07.02 |
[JPA] 엔티티 매핑 (0) | 2022.07.02 |
[JPA] 영속성 관리 - 내부 동작 방식 (0) | 2022.07.02 |
JPA 시작하기 (0) | 2022.06.20 |
댓글