
📘엔티티의 직렬(cascade) 관계
@Entity
public class Parent {
//부모 객체에서 cascade 설정
@OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
private List<Child> children = new ArrayList<>();
}
@Entity
public class Child {
@ManyToOne
private Parent parent;
Parent parent = new Parent();
Child child = new Child();
// 관계 설정
child.setParent(parent);
parent.getChildren().add(child);
// 부모만 저장 시
em.persist(parent);
// 자식도 자동으로 같이 저장
PERSIST 덕분에 em.persist(child)를 따로 안 해도 된다.CascadeType 종류| 타입 | 설명 |
|---|---|
| PERSIST | 부모 저장 시 자식도 저장 |
| MERGE | 부모 병합 시 자식도 병합 |
| REMOVE | 부모 삭제 시 자식도 삭제 |
| DETACH | 부모 detach 시 자식도 detach |
| REFRESH | 부모 DB 상태 새로고침 시 자식도 새로고침 |
| ALL | 위 모든 옵션을 포함 (전이 전체 적용) |
cascade는 부모와 자식간의 직렬관계PERSIST)REMOVE)REMOVE)는 실수로 부모를 삭제하면 자식까지 같이 사라질 수 있으니 조심해서 사용.child.setParent(parent) 등으로 연관관계 주인 쪽에도 값을 세팅해야 반영