자바칩

[JPA] @OneToMany 본문

Study/JPA

[JPA] @OneToMany

아기제이 2024. 8. 4. 20:57
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는 데이터베이스에서도 삭제된다.