PERSIST - 저장 시점에 연관된 엔티티도 저장 MERGE - 업데이트 시점에 연관된 엔티티도 업데이트 REMOVE - 삭제 시점에 연관된 엔티티도 삭제 REFRESH - 엔티티를 새로고침할 때 연관된 엔티티도 새로고침 DETACH - 영속성 컨텍스트에서 분리될 때 연관된 엔티티도 분리(준영속 상태로 전환) ALL - 모든 영속성 전이 옵션을 적용
Team -< Meber 관계
- Team은 수정될 때 그 row를 수정
- Team에 속한 Member는 수정될 때 기존 row를 soft delete하고 새로운 row를 생성
@Entity
public class Team {
@OneToMany(mappedBy = "team", cascade = CascadeType.PERSIST)
private List<Member> members;
}
@Entity
public class Member {
@ManyToOne
private Team team;
}
이렇게 해두고 Team에 수정한 Member가 Team을 저장할 때 생성되는 것을 기대했지만, 실제로는 Member가 수정되지 않음 => Team에 cascade = CascadeType.MERGE를 추가해 부모 엔티티의 수정 시 자식 엔티티도 수정되도록 함
@Entity
public class Team {
@OneToMany(mappedBy = "team", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<Member> members;
}