cascade, orphanRemoval
2021. 1. 20. 16:25ㆍJPA/JPA
영속성 전이 cascade
- 특정 엔티티를 영속 상태로 만들거나 삭제 상태로 만들때, 그와 관련된 엔티티도 함께 영속 상태나 삭제 상태로 만들고 싶을때 사용.
- 연관관계의 주인이 누구인지와는 상관없이 사용.
- 참조하는 곳이 한곳일때, 특정 엔티티가 개인 소유할 때 사용.
@OneToMany(mappedBy="parent", cascade=CascadeType.PERSIST)
CascadeType의 종류
- ALL: 모두 적용
- PERSIST: 영속
- REMOVE: 삭제
- MERGE: 병합
- REFRESH: REFRESH
- DETACH: DETACH
고아 객체 삭제 orphanRemoval
@OneToMany(mappedBy="parent", orphanRemoval=true)
- 부모 컬렉션에서 자식 엔티티 삭제하면 DELETE 쿼리 생성됨.
- 참조하는 곳이 한곳일때, 특정 엔티티가 개인 소유할 때 사용.
- @OneToOne, @OneToMany만 가능
- 연관관계의 주인이 누구인지와는 상관없이 사용.
영속성 전이 + 고아 객체 삭제 = 생명 주기 동기화
- CascadeType.All + orphanRemoval=true
- 두 옵션을 모두 활성화 하면 부모 엔티티를 통해서 자식의 생명 주기를 관리할 수 있음
- 도메인 주도 설계(DDD)의 Aggregate Root개념을 구현할 때 유용
'JPA > JPA' 카테고리의 다른 글
준영속상태의 엔티티를 변경할 때 변경감지와 merge() (0) | 2021.01.29 |
---|---|
임베디드 타입, @Embeddable, @Embedded (0) | 2021.01.21 |
지연로딩과 즉시로딩 (0) | 2021.01.20 |
상속관계 매핑 (0) | 2021.01.19 |
연관관계 매핑 (0) | 2021.01.19 |