1 대 1 관계
@OneToOne 애너테이션을 사용하면 1 대 1 관계를 맺어주는 역할을 합니다.
단방향 관계
- 외래 키 주인 정하기
Entity의 외래 키 주인은 일반적으로 N의 관계인 Entity이지만 1:1 관계에서는 외래 키의 주인을 직접 지정해야 합니다.
외래 키 주인만이 외래 키를 등록, 수정, 삭제할 수 있습니다.
주인이 아닌 쪽은 오직 외래 키를 읽기만 가능합니다.
- @JoinColumn()은 외래 키의 주인이 활용하는 애너테이션입니다.
컬럼명, null 여부, unique 여부 등을 지정할 수 있습니다.
양방향 관계
- 양방향 관계에서 외래 키의 주인을 지정할 때 mappedBy 옵션을 사용합니다.
mappedBy의 속성값은 외래 키의 주인인 상태 Entity 필드명을 의미합니다.
- 관계 설정 방법 정리
1. 단방향이라면 외래 키의 주인만 상대 Entity 타입의 필드를 가지면서
@JoinColumn()을 활용하여 외래 키의 속성을 설정해주면 됩니다.
2. 양방향이라면 외래 키의 주인만 상대 Entity 타입의 필드를 가지면서
@JoinColumn()을 활용하여 외래 키의 속성을 설정을 해줍니다.
그리고 상대 Entity는 외래 키의 주인 Entity 타입의 필드를 가지면서
mappedBy 옵션을 사용해 속성 값을 외래 키의 주인 Entity에 선언된 @JoinColumn()으로 설정되고 있는 필드명을 넣어주면 됩니다.
N 대 1 관계
@ManyToOne 애너테이션은 N 대 1 관계를 맺어주는 역할을 합니다.
1 대 N 관계
@OneToMany 애너테이션은 1 대 N 관계를 맺어주는 역할을 합니다.
N 대 M 관계
@ManyToMany 애너테이션은 N 대 M 관계를 맺어주는 역할을 합니다.
'Devlopment > Spring' 카테고리의 다른 글
[Spring] @Controller vs @RestController (0) | 2024.11.18 |
---|---|
[SpringBoot] sts4 프로젝트 생성 및 환경설정 (0) | 2024.04.04 |
[Springboot] 스프링 입문 - 스프링 빈과 의존 관계 (1) | 2024.04.01 |
[SpringBoot] 스프링 입문 - 회원 관리 예제 백엔드 개발 (0) | 2024.03.31 |
[SpringBoot] 스프링 입문 - 스프링 웹 개발 기초 (0) | 2024.03.31 |