본문 바로가기

Spring 정리/Spring JPA

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

반응형

* 개요

 

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

 

 

* JPA에서 연관관계란?

 

테이블에서는 외래키 하나로, 테이블을 조인하고, 참조가 가능합니다. 따라서 사실상 방향이라는 개념이 없습니다. 하지만, 객체에서는 참조용 필드가 있는 쪽으로만 참조가 가능합니다. 한쪽만 참조하면 단방향, 양쪽이 모두 참조하여 양방향입니다. 예를 들어 A->B, B->A 처럼 참조가 2군데이면 양방향 객체 참조입니다.

 

이처럼 2군데로 참조하기 때문에, 외래키를 관리할 곳이 필요합니다. 이 외래키를 관리할 곳을 연관관계의 주인이라고 하며, 외래키가 주인이 아닌 곳은, 외래키에 영향을 주지 못하고 단지 조회만 가능합니다. 

 

 

* N:1 양방향

 

N:1 관계는, 가장 많이 사용하는 연관관계로 N이 연관관계의 주인입니다. 동시에 외래키의 주인이기도 합니다.

Member : Team의 N : 1 연관관계로 사용법을 알아보겠습니다.

 

 

 테이블의 구조상 무조건 MEMBER 테이블은 TEAM_ID를 외래키로 가질 수 밖에 없습니다. Member가 N이므로, 연관관계의 주인이며, 외래키를 관리합니다.

 

Member 객체는 Team team을 가지고 있고, team을 이용해서 Member, Team의 객체를 수정할 수 있습니다. 

Team 객체는 List members를 가지고 있으며, 외래키의 주인이 아니기 때문에 단지 Member를 조회만 합니다.

 

 

* 참고

 

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

반응형

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

N:M 테이블 관계 설계하기  (0) 2021.09.13
연관관계 매핑  (0) 2021.09.10
1:N 테이블 관계 설계하기  (0) 2021.09.07
1:1 테이블 관계 설계하기  (0) 2021.09.07
Entity  (2) 2021.09.05