본문 바로가기

Spring 정리/Spring JPA

1:1 테이블 관계 설계하기

반응형

* 개요

 

연관관계를 정하기 위해서는 단방향인지 양방향인지, 연관관계의 주인이 어디인지를 먼저 고려해야 합니다.

 

1 : 1연관관계의 경우, 대상 테이블에 외래키를 관리하는 경우 단방향이 제한됩니다. 매핑 방식은 마치 N : 1에서 연관관계 주인에 따라 @JoinColumn과 mappedBy를 사용하는 것과 비슷합니다. 

 

 

* 1: 1 주테이블에 외래키 단방향

 

 

 

 1 : 1 주 테이블 외래키 단방향의 경우, N : 1 단방향과 같은 개념이라고 보면 됩니다. 테이블 구조 상, 외래키를 관리하고 있는 MEMBER 테이블처럼, Member 객체가 Locker locker를 가지고 있습니다. 연관관계 주인이 Member이므로, Locker locker를 통해서 연관관계 객체들이 수정 될 수 있습니다.

 

 

* 1: 1 주테이블에 외래키 양방향

 

 

 

 

 1 : 1 주 테이블 외래키 양방향의 경우도, N : 1 양방향과 같은 개념으로 생각하면 됩니다. 외래키를 관리하지 않는 Locker가 Member member를 변수로 가지면서, member를 조회할 수 있게 됩니다. 외래키를 관리하지 못하기 때문에 Locker는 Member member를 이용해 어떠한 객체 수정도 할 수 없습니다.

 

 

* 1: 1 대상 테이블에 외래 키 단방향

 

 

 

1 :1 대상 테이블 단방향 외래키의 경우는 논리적으로 성립하지 않습니다. 이 경우, 단방향은 지원하지 않습니다.

 

 

* 1: 1 대상 테이블에 외래 키 양방향

 

 

1 : 1 연관관계의 경우, 어떤 객체를 연관관계 주인으로 가져 갈 것인가? 를 고민해야 합니다.
주 테이블에 외래키를 두느냐, 대상 테이블에 외래키를 두느냐에 따라 장단점이 있습니다.

 

 

1. 주 테이블에 외래키


주 객체가 대상 객체의 참조를 가지는 것처럼, 주 테이블에 외래키를 두고 대상 테이블을 찾습니다.

객체지향 개발자가 선호하는 방식으로. JPA 매핑 관리를 합니다.


장점 : 주 테이블만 조회해도 대상 테이블의 데이터를 확인할 수 있습니다.
단점 : 값이 없으면 외래키에 null이 허용합니다.


2. 대상 테이블에 외래키


대상 테이블에 외래키가 존재한다. 전통적인 데이터베이스 개발자들이 선호합니다.


장점:  주 테이블과 대상 테이블을 일대일에서 일대다 관계로 변경할 때 테이블 구조 유지할 수 있습니다.
단점:  프록시 기능의 한계로 지연 로딩으로 설정해도 항상 즉시 로딩됩니다.

 

* 참고

 

자바 ORM 표준 JPA 프로그래밍 - 기본편

반응형

'Spring 정리 > Spring JPA' 카테고리의 다른 글

N:1 테이블 관계 설계하기  (0) 2021.09.07
1:N 테이블 관계 설계하기  (0) 2021.09.07
Entity  (2) 2021.09.05
JPA 영속성 컨텍스트  (0) 2021.08.30
JPA  (0) 2021.08.28