Spring/공부
DB(테이블)과 JPA(객체)의 차이로 인해 생기는 것들(양방향 연관관계)
synclair
2023. 9. 4. 23:48
테이블은 TEAM의 PK가 곧 Member의 FK이므로 하나로 이루어 진 관계이다.
하지만 객체로 연관 관계를 설정 한다면
사실상 양방향이 아닌 단방향 관계가 두 개로 이루어 져있다.
여기서 오는 패러다임으로 멤버 중심으로 팀을 바꾸고 싶다든가, 팀 중심으로 멤버를 바꾸고 싶다든가
하는 상황이 생긴다.
여기서 이 문제를 해결하기 위해서 우리는 연관관계에서 주인을 정해야하고 규칙이 필요하다.
연관관계의 주인(Owner)
양방향 매핑 규칙
• 객체의 두 관계중 하나를 연관관계의 주인으로 지정
• 연관관계의 주인만이 외래 키를 관리(등록, 수정)
• 주인이 아닌쪽은 읽기만 가능
• 주인은 mappedBy 속성 사용X
• 주인이 아니면 mappedBy 속성으로 주인 지정
연관관계의 주인 설정 기준
- 외래 키가 있는 곳을 주인으로 정하라. (@JoinColumn이 있는 쪽)
많이 하는 실수
- 연관관계의 주인에서 값을 입력하지 않으면 (해당 예에선 Member측에서 Team의 값을 입력 안함) Team_ID가 null 뜬다.