-
[Spring JPA] 단방향, 양방향 결정기준과 연관관계의 주인Back End/Spring Data JPA 2022. 1. 14. 16:27
# 단방향으로 해? 양방향으로 해?
테이블의 관점에서 보면, 외래키하나로 양쪽 조인이 가능하기에 단방향이나 양방향이나 의미가 없다.
하지만 객체입장에선 참조용 필드가 있는쪽으로 참조가 가능하기에 어느쪽에서 참조가 필요하냐에 따라 결정한다.
양방향은 사실상 단방향이 2개인 것과 같다.
# 연관관계의 주인
양방향으로 관계를 어노테이션으로 설정시에, ORM은 어느테이블에 FK를 생성해야할지 알 수가 없다.
그러므로 당연히 명시적으로 지정해주어야 한다.
연관관계의 주인쪽 테이블에 FK가 생성된다.
# 실무에서의 적용
N:1 단방향과 양방향만 사용한다.
1:N 이 필요할때(읽기전용)는 단방향이 아닌 N:1 양방향으로 걸어주어야 한다.
* 자세한 이유는 아래 포스팅을 참조
1:N을 단방향으로 걸게되면 1인쪽이 매핑의 주인이 되므로 N쪽을 저장할 때,
엔티티가 관리하는 FK가 다른 테이블에 있기때문에 FK 설정관련 update 쿼리가 한번 더 나가게 된다.728x90'Back End > Spring Data JPA' 카테고리의 다른 글
[Spring JPA] 상속관계 매핑의 문제점 (@Inheritance) (0) 2022.01.19 [Spring JPA] 슈퍼-서브타입 관계 모델링 (상속관계 매핑) (0) 2022.01.14 [Spring JPA] 성능 개선을 하기 위해 당신이 알아야 할 상식 (0) 2022.01.01 [Spring JPA] 트랜잭션 로깅하기, 테스트 실행환경 분리하기 (yml, properties) (0) 2021.12.24 [Spring JPA] JPA에서 Lazy loading 은 도대체 어떻게 이루어지는 걸까? (0) 2021.12.24