티스토리 뷰

📌 Cascade

해당 Entity의 상태(영속성)가 변하면, 연관된 Entity도 상태가 변한다. (전이)

CascadeType

ALL : 부모 엔티티의 모든 상태 변화가 자식 엔티티에 전이된다.

PERSIST : 부모 엔티티가 영속 상태가 되면, 자식 엔티티도 영속 상태가 된다.

MERGE : 부모 엔티티에 merge()를 하면, 자식 엔티티에도 전이된다. (준영속 → 영속)

REMOVE : 부모 엔티티가 삭제되면, 자식 엔티티도 삭제된다.

 

📌 orphanRemoval = true

@OneToOne, @OneToMany 에서 사용할 수 있다.

부모 엔티티와 연관관계가 끊긴 자식 엔티티(고아 객체)는 DB에서 삭제된다.

 

📌 CascadeType.REMOVE & orphanRemoval = true

부모 엔티티를 삭제하면 자식 엔티티도 삭제된다는 점에서는 동일하다.

차이점

CascadeType.REMOVE

 부모 엔티티에서 자식 엔티티를 지워도(연관관계를 끊어도 → list.remove() , null) 영향이 없다.

orphanRemoval = true

 부모 엔티티에서 자식 엔티티를 지우면 db에서 삭제된다.

 

📌 Reference

https://tecoble.techcourse.co.kr/post/2021-08-15-jpa-cascadetype-remove-vs-orphanremoval-true/

https://www.baeldung.com/jpa-cascade-remove-vs-orphanremoval

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함