JPA/JPA
cascade, orphanRemoval
YoonBing9
2021. 1. 20. 16:25
영속성 전이 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개념을 구현할 때 유용