728x90

orphanRemoval 2

영속성 전이(CASCADE)에 관해

영속성 전이 : CASCADE 특정 엔티티를 영속 상태로 만들때 연관된 엔티티도 함께 영속 상태로 만들고 싶을때 사용합니다. eg. 부모 엔티티 저장시 자식 엔티티도 저장하게끔. 언제 쓰느냐? 하나의 부모가 자식들을 관리할 때 ( 단일 엔티티에 종속적인 경우) 라이프사이클이 같을때, 단일 소유자 쓰면 안되는 케이스? 자식의 연관 관계가 2개 이상일때 예를 들어 다음과 같은 경우에는 쓰면 안된다. 그림처럼 C 라는 엔티티가 A, B 에 의해서 관리된다고 하자. 이런 경우에서는 영속성 전이를 사용해서는 안된다. 참고 CASCADE 의 옵션은 ALL, PERSIST, REMOVE, MERGE, REFRESH, DETACH 가 있지만 주로 사용되는건 ALL, PERSIST, REMOVE 정도이고 실무에서 사용되..

JPA 2022.10.06

고아 객체(feat. orphanRemoval)

JPA는 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제하는 기능을 제공하는데 이것을 고아 객체(ORPHAN) 제거라 한다. 이 기능을 사용해서 부모 엔티티의 컬렉션에서 자식 엔티티의 참조만 제거하면 자식 엔티티가 자동으로 삭제된다. @Entity public class Parent { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "parent", orphanRemoval = true) private List children = new ArrayList(); ... } 위 코드와 같이 orphanRemoval = true로 설정하면, 컬렉션에서 제거한 엔티티는 자동으로 삭제된다. Parent parent1 = em.find(Pare..

JPA 2022.06.12
728x90