Spring/공부

DB(테이블)과 JPA(객체)의 차이로 인해 생기는 것들(양방향 연관관계)

synclair 2023. 9. 4. 23:48

테이블은 TEAM의 PK가 곧 Member의 FK이므로 하나로 이루어 진 관계이다.

하지만 객체로 연관 관계를 설정 한다면

Member
Team

사실상 양방향이 아닌 단방향 관계가 두 개로 이루어 져있다.

여기서 오는 패러다임으로 멤버 중심으로 팀을 바꾸고 싶다든가, 팀 중심으로 멤버를 바꾸고 싶다든가

하는 상황이 생긴다.

여기서 이 문제를 해결하기 위해서 우리는 연관관계에서 주인을 정해야하고 규칙이 필요하다.

연관관계의 주인(Owner)

양방향 매핑 규칙

• 객체의 두 관계중 하나를 연관관계의 주인으로 지정

• 연관관계의 주인만이 외래 키를 관리(등록, 수정)

• 주인이 아닌쪽은 읽기만 가능

• 주인은 mappedBy 속성 사용X

• 주인이 아니면 mappedBy 속성으로 주인 지정

연관관계의 주인 설정 기준

  • 외래 키가 있는 곳을 주인으로 정하라. (@JoinColumn이 있는 쪽)

많이 하는 실수

  • 연관관계의 주인에서 값을 입력하지 않으면 (해당 예에선 Member측에서 Team의 값을 입력 안함) Team_ID가 null 뜬다.