728x90
반응형
일대일(OneToOne) 관계
@Entity
public class Shop {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToOne(mappedBy = "shop")
private Manager manager;
// Getter, Setter, Constructors, etc.
}
@Entity
public class Manager {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToOne
@JoinColumn(name = "shop_id")
private Shop shop;
// Getter, Setter, Constructors, etc.
}
Shop 설명
1. @Entity: JPA 엔터티임을 나타냅니다.
2. @Id: 기본 키 필드를 나타냅니다.
3. @GeneratedValue: 기본 키를 자동으로 생성하는 전략을 설정합니다.
4. @OneToOne: 일대일 관계를 나타냅니다. 한 백화점은 하나의 매니저와만 관계를 맺습니다.
mappedBy = "shop": 양방향 관계에서 상대방 엔터티의 필드를 지정합니다.
여기서는 Manager 엔터티의 shop 필드를 통해 관계가 맺어진다는 것을 나타냅니다.
Manager 설명
1. @Entity: JPA 엔터티임을 나타냅니다.
2. @Id: 기본 키 필드를 나타냅니다.
3. @GeneratedValue: 기본 키를 자동으로 생성하는 전략을 설정합니다.
4. @OneToOne: 일대일 관계를 나타냅니다. 한 매니저는 하나의 백화점과만 관계를 맺습니다.
5. @JoinColumn(name = "shop_id"): 관계를 맺을 대상 엔터티의 외래 키(Foreign Key)를 지정합니다.
이 예제에서는 Shop과 Manager 간의 일대일 양방향 관계를 설정하였습니다.
Shop 엔터티의 manager 필드는 Manager 엔터티의 shop 필드와 연결되어 있습니다.
이를 통해 특정 백화점은 하나의 매니저를 가지고, 각 매니저도 하나의 백화점에 속하는 관계가 형성됩니다.
*정리
백화점(Shop)은 하나의 매니저를 가지고, 각 매니저도 하나의 백화점에 속하는 관계인 일대일OneToOne 관계이며 한쪽에서 JoinColumn을 설정하면 다른 한쪽은 mappedBy를 사용 하는 것이 관례입니다.
728x90
반응형
'인프런 강의 > 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발' 카테고리의 다른 글
[JPA] 필드와 컬럼 및 기본 키 매핑 어노테이션 (0) | 2024.01.29 |
---|---|
[JPA]영속성 컨텍스트 (0) | 2024.01.29 |
다대다(ManyToMany) 관계 (0) | 2024.01.19 |
일대다(OneToMany)와 다대일(ManyToOne)관계 (0) | 2024.01.19 |
JPA주요 관계 매핑 타입 (0) | 2024.01.19 |