자바칩
[JPA] @OneToMany 본문
728x90
@Entity
public class Concert {
@OneToMany(mappedBy = "concert", cascade = CascadeType.ALL, orphanRemoval = true)
private List<District> districts; // 공연에 속하는 구역 리스트
}
@Entity
public class District {
@ManyToOne(fetch = FetchType.LAZY)
private Concert concert; // 구역이 속한 공연
}
@OneToMany
Concert 엔티티가 여러 개의 District 엔티티를 가질 수 있음을 나타낸다.
즉, 하나의 Concert가 여러 개의 District를 포함할 수 있다.
mappedBy = "concert"
이 속성은 District 엔티티에서 이 관계의 소유자가 concert 필드임을 지정한다.
mappedBy 속성은 연관 관계의 주인을 정의하며, 주인은 외래 키가 있는 쪽을 가리킨다.
이 경우, District 엔티티의 concert 필드가 외래 키를 소유하고 있다.
- District 엔티티는 Concert에 대한 참조를 가지고 있어야 한다.
cascade = CascadeType.ALL
이 속성은 영속성 컨텍스트 내에서 Concert 엔티티의 상태 변화가 자동으로 District 엔티티로 전파됨을 의미한다. CascadeType.ALL은 모든 영속성 작업(저장, 삭제, 병합 등)이 전파된다는 것을 의미한다.
- 예를 들어, Concert를 저장할 때 관련된 모든 District도 함께 저장됩니다.
orphanRemoval = true
이 속성은 부모 엔티티(Concert)와의 관계가 제거된 자식 엔티티(District)를 자동으로 삭제하도록 한다.
즉, Concert에서 District가 제거되면 해당 District는 데이터베이스에서도 삭제된다.
'Study > JPA' 카테고리의 다른 글
[JPA] Response를 DTO로 해야 하는 이유, N + 1 문제 해결 방법, 양방향 매핑 순환 참조 (1) | 2024.08.04 |
---|---|
[JPA] 즉시 로딩(FetchType.EAGER)과 지연 로딩(FetchType.LAZY) (0) | 2024.06.17 |