@OneToMany(mappedBy="parent", cascade=CascadeType.ALL)
private List<Child> children = new ArrayList<>();
public void addChild(Child child){
children.add(child);
child.setParent(this);
}
try {
Child child1 = new Child();
Child child2 = new Child();
Parent parent = new Parent();
parent.addChild(child1);
parent.addChild(child2);
em.persist(parent);
tx.commit();
} catch (Exception e) {
tx.rollback();
} finally {
em.close();
}
부모 엔티티를 영속화를 하면 cascade=CascadeType.ALL으로 인해 자식 엔티티도 함께 영속화가 된다.
Parent parent1 = em.find(Parent.class, id);
parent1.getChildren().remove(0); // 자식 엔티티를 컬렉션에서 제거
실행하게 되면 DELETE FROM CHILD WHERE ID="child1"
✔ 영속성 전이와 고아객체를 혼용해서 사용가능
두 옵션을 모두 활성화 하면 부모 엔티티를 통해서 자식의 생명
주기를 관리할 수 있음
CASCADE, 고아객체는 부모 엔티티가 자식 엔티티의 생명주기를 관리하기 위해 사용
반드시 단일 소유자(특정 엔티티가 개인 소유)할 경우에만 사용해야한다.