: 특정 Entity
가 상태 변화를 연관된 Entity
에 전파시키는 옵션이다.
예: 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장.
- 단일 엔티티에 종속적일 때 사용한다. → 단일 소유자
- 엔티티 생명주기가 거의 유사할떄 사용한다.
@OneToMany(mappedBy="parent", cascade=CascadeType.PERSIST)
부모 클래스
@Entity
public class Parent {
@Id @GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy=parent, casecade= CaseCadeType.ALL)
private List<Childe> childList = new ArrayList<>();
public void addChilde(Child Child){
childList.add(child);
}
}
자식 클래스
@Entity
public class Child {
@Id @GeneratedValue
private Long id;
private String name;
@ManyToOne
@JoinColumn("parent_id")
Parent parent;
결과
Child child1 = new Child();
Child child2 = new Child();
Parent parent = new Parent();
parent.addChild(child1);
parent.addChild(child2);
em.persist(parent) // 부모가 영속화 되면 자식도 같이 영속화 된다.
// em.persist(child1) caseCade로 인하여 부모와 함께 영속화 되어 안해도됌
// em.persist(child2)
- 영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없다.
- 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화 하는 것만 제공할뿐
- 자식의 소유자가 하나일 때만 사용하자.
ex) 게시판
- ALL : 모두 적용
- PERSIST : 영속
- REMOVE : 삭제
- MERGE : 병합
- REFRESH : REFRESH
- DETACH : DETACH