ex) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장
‼️ 연관관계나 지연로딩, 즉시로딩과 관계 없음!!!!!!
@Entity
public class Parent {
//...
@OneToMany(mappedBy="parent", **cascade=CascadeType.ALL**)
private List<Child> childList = new ArrayList<>();
public void addChild(Child child) {
childList.add(child);
child.setParant(this);
}
}
@Entity
public class Child {
//...
//양방향 주인
@ManyToOne
@JoinColumn(name = "parent_id")
private Parent parent
}
//..
try {
Child child1 = new Child();
Child child2 = new Child();
Parent parent = new Parent();
parent.addChild(child1);
parent.addChild(child2);
em.persist(parent);
em.persist(child1); // 귀찮.. **cascade 설정 해주면 삭제가능**
em.persist(child2); // 귀찮... **cascade 설정 해주면 삭제가능**
}
위 같이 구현하면 매번 child1 , child2 를 persist 해줘야 한다. 귀찮은 부분을 삭제하여도 parent의 , =CascadeType.ALL) 옵션 때문에
귀찮은 부분은 제외하여도 자동으로 insert가 된다. ( Parent 객체에 addChild 해주었고, 영속성을 전이해주었기 때문)
cascade 해준것들도 같이 persist 해줄 거라고 생각하면 된다.