티스토리 뷰

Spring

[JPA] N:1 관계

tbMaster 2021. 11. 22. 18:33
반응형

다대일 관계의 단방향, 양방향에 대하여 정리한다.

※ 공부하면서 정리하므로, 잘못된 정보가 있을 수 있습니다. 잘못된 정보가 있을 경우 알려주시면 감사하겠습니다. :)

 


JPA의 N:1 관계를 설정하기에 앞서 양방향? 단방향? 

단방향 : 관계에서의 주인이 되는 Entity에서만 다른 Entity에 접근할 수 있는 것을 말한다.

※ 주인이 되는 Entity라는 것은 ? 

- mappedBy 속성을 포함하지 않는 Entity

- 반대되는 개념 : non-owning side 

 

양방향 : non-owning side Entity에서도 다른 Entity에 접근할 수 있는 것을 말한다. 즉, 양쪽 모두에서 데이터 접근이 가능하다는 의미이다. 

 

 

N : 1 관계 (다대일 관계) 란?

Ex) Note와 Category의 관계에서 Category 은 여러 개의 Note를 가질 수 있으며, Note는 단 하나의 Category에만 소속될 수 있다. 이러한 관계를 N:1 (다대일) 관계라 한다. 

 

※ 다대일, 일대다 관계 중 실무에서는 확장성 등을 고려해 다대일을 주로 사용한다고 한다.

 

 

JPA 에서 N:1 관계 

[ Notes, Categories 에 대한 다대일 관계 ]

단방향

Category 와 Note 관계에서 주인이 되는 Entity를 Note 로 정하여, 다대일 관계를 가지도록 한다.

Note 쪽에 foreign key로 Category의 Id를 포함한다. 

 

[ note entity ]
[ Categories Entity ]

 

- Insert 방법

[ insert  방법 ]

 

 

 

양방향

Category 에서도 데이터 접근이 가능하도록 Note에 대한 정보를 설정해준다. Category 입장에서는 일대다로 접근하므로, Category 내에 있는 Note 필드에 @OneToMany를 설정하고, 관계를 주도하는 Entity가 아님(non-owning side Entity)을 알리기 위해 mappedBy 속성을 추가한다. 

 

[ Category Entity ]
[ Note Entity ]

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함