(복습, 정리) 양방향 연관관계일 때 주인을 잘 정해야하는 이유

연관관계 주인은 누가 외래키를 관리할 것인가의 문제이다. 연관관계의 주인을 잘못 정하면 상대 테이블의 외래키 값이 업데이트되므로 관리와 유지보수가 어렵고, 추가적으로 별도의 업데이트 쿼리가 발생하는 성능 문제가 발생한다.

예를 들어 MEMBER 테이블이 있고 이 객체 Member에는 Team 이라는 참조 변수가 있다. Team에는 List<Member> 컬렉션이 있다. Member와 Team은 양방향 다대일 관계이고, 통상적으로 우리는 다 쪽에 FK가 있다고 하고 연관관계 주인이라고 한다.

정답 : Member(연관관계 주인, FK = Team team)

어떤 회원이 팀을 바꾸려고 할 때 Member의 외래키인 team만 바꾸면 된다. 하지만 Team이 연관관계 주인이라고 한다면 TEAM 테이블을 업데이트(List<Member>를 업데이트)할 뿐만 아니라 MEMBER 테이블도 업데이트(Member의 Team도 업데이트) 한다.

이렇게 매핑 주체만 업데이트하는 게 아니라 상대 매핑 테이블도 함께 업데이트하면 관리와 유지보수가 어렵고, 추가적으로 별도의 업데이트 쿼리가 발생하기 때문에 성능을 저하시키는 문제가 발생합니다.

Last updated