← 질문 목록
#137깊이 0
외래 키 변경은 어느 쪽에서 반영해야 하는가?
연관관계의 주인 쪽을 바꿔야 한다. 주인은 외래 키나 조인 테이블 값을 쓰는 매핑이며 반대편만 바꾸면 SQL에 반영되지 않는다.
| 기준 | 주인 쪽 | mappedBy 쪽 |
|---|---|---|
| 외래 키 SQL | 반영한다 | 반영하지 않는다 |
| 매핑 표시 | mappedBy 없음 | mappedBy 지정 |
| 객체 탐색 | 가능하다 | 가능하다 |
다대일과 일대다 양방향 관계에서는 외래 키를 가진 다대일 쪽이 보통 주인이다. 주인이라는 말은 도메인상 중요도가 아니라 쓰기 권한을 뜻한다.
객체 그래프의 일관성을 위해 양쪽 참조를 함께 맞춘다. 편의 메서드가 컬렉션과 참조를 한 번에 갱신하면 같은 트랜잭션 안의 오해를 줄인다.
cascade와 orphanRemoval은 주인 여부와 별도 규칙이다. 하나는 연산 전파를 정하고 다른 하나는 고아 삭제를 정한다.