영속성 전이(cascade)
사전적 정의: 작은 폭포, 폭포처럼 흐르다
엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션
이때 부모는 One, 자식은 Many
영속성 전이 옵션을 무분별하게 사용할 경우 삭제되지 말아야 할 데이터가 삭제될 수 있어 조심히 사용해야 함
고아 객체 제거하기
고아 객체: 부모 엔티티와 연관 관계가 끊어진 자식 엔티티
고아 객체 제거 기능은 참조하는 곳이 하나일 때만 사용해야 함
@OneToMany 어노테이션에 "orphanRemoval = true" 옵션 사용
@Test
@DisplayName("고아객체 제거 테스트")
public void orphanRemovalTest(){
Order order = this.createOrder();
order.getOrderItems().remove(0); // order 엔티티에서 관리하고 있는 orderItem 리스트의 0번째 인덱스 요소 제거
em.flush();
}
Cascade 옵션 중 REMOVE: 부모 엔티티가 삭제될 때 연관된 자식 엔티티도 함께 삭제
고아 객체: 연관 관계가 끊어지는 것