본문 바로가기
공부/Spring

[JPA] 연관관계 매핑 기초

by JERO__ 2022. 7. 2.

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

댓글