본문 바로가기
Spring/JPA

연관관계 - @OneToMany

by YellowCow 2023. 3. 18.

JPA에서는 DB 테이블 간 관계를 매핑하기 위한 어노테이션들을 지원한다

 

이 페이지에서는 1:N 관계를 매핑하는 @OneToMany 어노테이션에 대해 알아보겠다

 

1:N 관계는 다음과 같이 DB와 Enitity로 표현될 수 있다

 

DB

 

Entity

 

연관관계의 주인

1:N 관계에서 1의 관계에 있는 Department의 employees가 연관관계의 주인이 된다

 

1:N 관계에서 1의 관계에 있는 Department의 employees가 연관관계의 주인이므로

Entity 상에서는 외래키(참조값) 관리를 Department의 employees에서 하고 있지만

 

DB에서는 Employee의 department에서 외래키 관리를 하고 있으므로

 

Department 엔티티의 employees(참조값)가 변경될 경우,

Department 테이블에 Update 쿼리가 전송되지 않고

Employee 테이블에 Update 쿼리가 전송된다

(외래키가 Department가 아닌 Employee 테이블에 있기 때문)

 

이럴 경우,

연관관계에 있는 DB 테이블 수가 많아질 경우에 디버깅이 어려워 질 수 있으므로

 

1:N 관계보다는 N:1 관계를 이용할 것을 권장한다.

 

양방향 연관관계 적용 

1. N:1 관계에서 1의 관계에 있는 Employee의 department 참조변수 추가

2. ManyToOne 관계 설정 

 

3. Employee의 department위에 JoinColum 어노테이션을 추가 및 연관관계 주인(emplpyees) 지정

 

4. JoinColum 어노테이션 속성으로 insertable=false와 updatable=false를 추가

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

연관관계 - @ManyToMany  (0) 2023.03.23
연관관계 - @OneToOne  (0) 2023.03.22
연관관계 - @ManyToOne  (0) 2023.03.17
양방향 연관관계 주의점  (0) 2023.03.15
양방향 연관관계 - 연관관계의 주인  (0) 2023.03.12

댓글