728x90
Springboot에서 관계는 1:1, 1:N, N:1, N:M 관계가 있다.
이 중 OneToMany는 1:N을, ManyToOne은 N:1을 표현하는 어노테이션이다.
이 두개는 외래키의 위치가 다르며 게시글과 댓글로 예를 들자면
OneToMany는 게시글 안에 댓글을 포함시키는 것이고 외래키는 댓글이 가지게 된다.
ManyToOne은 댓글이 하나의 게시글을 참조하는 것(가리키는 것)이며 외래키는 게시글이 가진다.
OneToMany
- 외래키를 N에서 관리하지만 1에서 N쪽을 제어(CRUD)할 수 있기에 헷갈릴 수 있다.
- 테이블의 특정 레코드 삭제 및 업데이트시 모든 레코드를 확인해야 하는 문제가 발생할 수 있다.
- 연관관계 관리를 위해 추가로 UPDATE SQL이 실행된다
OneToMany
- 외래키를 1에서 관리하기에 DB에서 외래 키를 관리하는데 더 쉽고 효율적이다.
- OneToMany와 비교해 봤을 때, 삭제 및 업데이트 작업이 더 간단해진다.
ManyToOne은 DB 설계 관점 및 편의성과 성능 최적화를 위해 권장되는 접근 방법이다.
단방향 매핑 시, 특정 상황을 제외하고는 ManyToOne을 사용하는게 좋다.
'Springboot' 카테고리의 다른 글
[Springboot] S3에 이미지 올리기 (0) | 2023.08.01 |
---|---|
[Springboot] UnsatisfiedDependencyException (0) | 2023.08.01 |
[CS] 정규화 및 반정규화 (0) | 2023.07.29 |
[springboot] 07-21 ~ 07-27 (0) | 2023.07.27 |
[Springboot] RefreshToken Redis에 저장하기 (0) | 2023.07.19 |