공부/JPA
영속성 전이: CASCADE, 고아 객체
챠오위
2022. 2. 10. 23:18
- 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용
예) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장
영속성 전이: 저장
이때, 영속성 전이는 연관 관계를 매핑하는 것과 관련이 없다는 것을 주의한다.
영속성 전이는 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함만을 제공한다.
CASCADE 의 종류
ALL : 모두 적용
PERSIST : 영속
REMOVE : 삭제
MERGE : 병합
REFRESH : REFRESH
DETACH : DETACH
고아 객체
- 고아 객체 제거: 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제
- orphanRemoval = true
- 고아 객체는 참조하는 곳이 하나일 때만 사용해야 한다.
영속성 전이 + 고아 객체, 생명주기
- CascadeType.ALL + orphanRemovel = true
- 스스로 생명주기를 관리하는 엔티티는 em.persist() 로 영속화하고, em.remove() 로 제거한다.
- 두 옵션을 모두 활성화하는 경우에는 부모 엔티티를 통해서 자식의 생명주기를 관리할 수 있다.
참고)
1. 김영한 님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편'에서 영속성 전이(cascade) 와 고아 객체