부모 엔티티가 영속화될 때 자식 엔티티도 같이 영속화되고, 부모 엔티티가 삭제될 때 자식 엔티티도 삭제되는 등 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 전이되는 것을 의미합니다.
public class Post extends BaseEntity {
@Id @GeneratedValue
@Column(name = "post_id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
private Member member;
@Builder.Default
@OneToMany(mappedBy = "post", cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<Comment> commentList = new ArrayList<>();
@Builder.Default
@OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true)
private List<PostImage> postImageList = new ArrayList<>();
@Builder.Default
@OneToMany(mappedBy = "post", cascade = CascadeType.REMOVE, orphanRemoval = true)
private List<PostLike> postLikeList = new ArrayList<>();
부모엔티티 먼저 삭제하면 자식엔티티의 부모엔티티를 참조할 수 없기 때문이다.
따라서 자식 엔티티들의 cascade 옵션을 REMOVE 또는 ALL 로 설정할 경우 삭제하고자 하는 엔티티의 연관관계의 끝에서 부터 삭제가 된다.