JPA를 사용하며 알아야할 개념중 '연관관계의 주인'에 대해서 살펴보자.
연관관계의 주인이란?
JPA에서 연관관계의 주인은 엔티티 간의 양방향 연관관계를 관리하는데 중요한 역할을 하는 개념이다.
양방향 연관관계란 두 개의 엔티티 클래스가 서로를 참조하고 있는 상태를 의미한다.
연관관계의 주인은 일반적으로 두 개의 연관관계 테이블중 외래키를 가지고 있는 테이블에 해당하는 엔티티가 연관관계의 주인이 된다.
연관관계의 주인을 엔티티간의 관계를 주도하고 관리하게 된다.
주인 엔티티의 필드를 사용하여 연관관계 간의 관계를 매핑하며, 이 필드는 데이터베이스 테이블에 반영된다.
더불어 연관관계의 주인이 아닌 엔티티는 읽기 전용(Read-Only) 엔티티로 사용되게 된다.
주인 엔티티가 데이터베이스에 영향을 미치기 때문에 주인 엔티티가 아닌 다른 엔티티는 연관관계를 통해 데이터를 읽을 수는 있지만 변경할 수는 없다.
연관관계의 주인 예시 코드
@Entity
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 다른 필드들...
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<OrderItem> items = new ArrayList<>();
}
@Entity
public class OrderItem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 다른 필드들...
@ManyToOne
@JoinColumn(name = "order_id") // 외래 키 설정
private Order order;
}
위 코드는 Order' 엔티티와 'OrderItem' 엔티티 사이의 일대다 관계를 정의하고 있다.
'Order' 엔티티는 @OneToMany 어노테이션을 사용하여 관게를 매핑하고, 'mappedBy' 속성으로 'OrderItem' 엔티티의 'order' 필드를 지정하여 연관관계의 주인이 'Order' 엔티티임을 나타내고 있다.
'Spring' 카테고리의 다른 글
[Spring] Spring Boot 3 마이그레이션 시작하기 (0) | 2023.12.13 |
---|---|
[JPA] 일대다(1:N), 다대일(N:1) 관계 (0) | 2023.09.03 |
[Spring] 서비스 운영간 발생한 DB Connection Closed 이슈 (0) | 2023.08.30 |
[Spirng, JPA] object references an unsaved transient instance - save the transient instance before flushing (0) | 2023.08.16 |
[Spring] 구글 OAuth2.0 이용 소셜 로그인 구현 (0) | 2023.08.10 |