SMALL

JPA를 이용한다면 일반적인 테이블 간의 관계를 이용하는 것처럼, 

Entity 사이의 관계를 통해 데이터를 관리할 수 있다.

 

하지만, JPA를 사용하여 연관관계를 맺기 위해서는 참조 변수를 이용하기 때문에

테이블의 연관과 Entity의 연관이 정확하게 일치하지 않는다.

 

이러한 문제를 해결하면서 연관관계를 매핑하는 방법을 알아야 한다.

 

먼저, 연관관계 매핑에 사용되는 용어들을 정리해 보자.

방향 (Direction)

방향 관계: 두 Entity가 관계를 맺을 때, 한쪽의 Entity만 참조하고 있는 것을 의미한다
방향 관계: 두 Entity가 관계를 맺을 때, 양쪽이 서로 참조하고 있는 것을 의미한다

 

다중성 (Multiplicity)

Many To One: 다대일 (N : 1)
One To Many: 일대다 (1 : N)
One To One: 일대일 (1 : 1)
Many To Many: 다대다 (N : N)

 

위의 관계 중에 일대다(1 : N)와 다대일(N : 1)은 같은 것이라고 생각할 수 있다.

예를 들어, 유저가 게시판에 등록하는 글의 관계를 보면 

유저는 여러개의 글을 등록할 수 있어 : 유저와 게시판의 관계는 일대다(1 : N)

게시판에는 여러 유저가 등록한 글이 존재하므로 : 게시판과 유저의 관계는 다대일(N : 1)

 

어떻게 생각하면 같은 것인데, 중요하게 중점을 두어야 하는 것은

"어떤 Entity를 중심으로 상대 Entity를 바라보느냐" 이다.

 

연관 관계의 주인 (Owner)

Entity 사이의 관계에서의 주인을 찾는 방법은 

연관관계를 갖는 두 테이블에 대해서 외래 키(Foreign Key)를 갖는 테이블이 연관관계의 주인이 된다.

연관관계의 주인만이 외래 키(Foreign Key)를 관리할 수 있고, 반면 주인이 아닌 Entity는 읽기만 할 수 있다.

 

( 결국 Entity의 관계를 생각할 때는 이미 설계된 테이블의 내역을 기반으로 관계를 그리는 게 더 이해하기 쉬운 거 같다)

( 그렇기 때문에 데이터베이스에 대한 지식과 학습이 필요하다고 느껴진다.. ㅎㅎ)

LIST

+ Recent posts