티스토리 뷰
다대일 관계의 단방향, 양방향에 대하여 정리한다.
※ 공부하면서 정리하므로, 잘못된 정보가 있을 수 있습니다. 잘못된 정보가 있을 경우 알려주시면 감사하겠습니다. :)
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 관계
단방향
Category 와 Note 관계에서 주인이 되는 Entity를 Note 로 정하여, 다대일 관계를 가지도록 한다.
Note 쪽에 foreign key로 Category의 Id를 포함한다.
- Insert 방법
양방향
Category 에서도 데이터 접근이 가능하도록 Note에 대한 정보를 설정해준다. Category 입장에서는 일대다로 접근하므로, Category 내에 있는 Note 필드에 @OneToMany를 설정하고, 관계를 주도하는 Entity가 아님(non-owning side Entity)을 알리기 위해 mappedBy 속성을 추가한다.
'Spring' 카테고리의 다른 글
[ 개념 ] DI ( Dependency Injection ) - 1 (0) | 2022.02.14 |
---|---|
[ validation ] BindException? MethodArgumentNotValidException? (+ @RequestBody) (0) | 2022.01.04 |
[ junit5 ] 단위테스트 - controller (0) | 2021.12.30 |
[Spring Rest Docs ] Spring Rest Docs 적용하기 (2) | 2021.11.23 |
[JPA] 1 :1 관계 (Foreign Key, Shared Primary Key) (0) | 2021.11.22 |