[java] Hibernate에서 연관 관계에서의 캐스케이드(Cascade) 설정하는 방법은?

Hibernate를 사용하여 객체 간의 연관 관계를 설정할 때, 부모 객체에 대한 조치가 자식 객체에도 적용되어야 할 경우가 있습니다. 예를 들어, 부모 객체가 삭제되면 자식 객체도 함께 삭제되어야 한다면, 캐스케이드 설정을 통해 이를 쉽게 처리할 수 있습니다.

캐스케이드 설정은 @OneToMany, @OneToOne, @ManyToMany 등의 어노테이션에 설정할 수 있습니다.

@Entity
public class Parent {
    // ...
    
    @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
    private List<Child> children;
    
    // ...
}

@Entity
public class Child {
    // ...
    
    @ManyToOne
    @JoinColumn(name = "parent_id")
    private Parent parent;
    
    // ...
}

위의 예시에서 Parent 엔티티의 children 필드에 @OneToMany 어노테이션이 적용되어 있습니다. 이 때, cascade 속성에 CascadeType.ALL을 설정하면, Parent 객체가 저장, 수정, 삭제될 때 해당 Parent와 연관된 모든 Child 객체들에도 동일한 작업이 적용됩니다.

또한, CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE와 같은 다른 옵션도 사용할 수 있습니다. 필요에 따라 적절한 옵션을 선택하여 연관 관계에서 원하는 캐스케이드 동작을 설정할 수 있습니다.

더 자세한 내용은 Hibernate 공식 문서를 참조하시기 바랍니다.