스프링/JPA

[JPA] 엔티티 연관관계의 주인

imcoding 2022. 9. 13. 18:26
Entity
연관관계의 주인

 

개념

외래키를 관리할 객체를 말한다.

 

엔티티의 연관관계는 테이블에서와 객체에서 각각 존재한다.

 

테이블에서는 사실 연관관계의 주인이 누구건간에 테이블 구조는 똑같다.

 

두 테이블 중 외래키를 갖고 있는 곳은 한 곳이며, 이 외래키 하나로 양쪽 테이블이 서로 조인하여

데이터를 가져올 수 있다.

 

하지만, 객체에서는 다르다.

 

두 테이블 A와 B가 N : 1로 연관관계가 매핑되어 있다면

A에는 B를 객체로 생성할 수 있고, B에서도 A를 List에 넣어 관리할 수 있다.

 

1 : 1 혹은 N : N으로 매핑되어 있다고 가정해도,

동일하게 양 쪽 모두에서 서로를 객체로 생성하여 관리할 수 있다.

 

이런 차이 때문에 두 객체 중 한 곳에서 외래키를 관리할 수 있도록 연관관계의 주인을 정해줘야 한다.

 

연관관계의 주인이 되는 주 테이블에서는 외래키를 관리(등록, 수정, 삭제)할 수 있다. 

 

연관관계의 주인이 아닌 대상 테이블에서는 외래키를 조회할 수만 있다.

 

 

그래서 두 테이블 중 어느 테이블을 주인으로 정해야 할까?

 

사실 명확한 정답은 없다.

 

테이블 자체는 동일하기 때문에 두 객체 중 어느 곳이라도 주인이 될 수 있기 때문이다.

 

여러가지 이야기가 많지만 현재까지 연관관계의 주인을 정하는 가장 편리하고 효율적인 방법은

외래키를 가진 쪽을 주인으로 정하는 것이다.

 

 

길게 고민할 것 없이 외래키를 갖는 쪽으로 정하면 몸도 마음도 편할 것!

 

다양한 연관관계 매핑

https://imcoding.tistory.com/57

 

[JPA] 다대일 연관 관계 매핑

Entity 다대일 연관 관계 매핑 연관관계의 주인? 연관관계의 주인에 대한 개념이 없다면 아래 글을 먼저 읽고 오시길 권장드립니다. https://imcoding.tistory.com/56 [JPA] 엔티티 연관관계의 주인 연관관계

imcoding.tistory.com

 

https://imcoding.tistory.com/58

 

[JPA] 일대다 연관 관계 매핑

Entity 일대다 연관 관계 매핑 읽기 전에 참고하면 좋은 글 더보기 https://imcoding.tistory.com/56 [JPA] 엔티티 연관관계의 주인 연관관계의 주인 개념 외래키를 관리할 객체를 말한다. 엔티티의 연관관계

imcoding.tistory.com