cascade, orphanRemoval

HUSII·2023년 7월 5일
0

JPA

목록 보기
1/7

cascade

특정 엔티티를 영속상태로 만들때 연관된 엔티티도 영속상태로 만들고 싶을떄 사용한다.

영속성 전이는 연관관계를 매핑하는 것과는 아무 관련이 없다
엔티티를 영속화할떄 관련 엔티티도 영속화해주는 편리함을 제공해주는 것뿐

CascadeType.REMOVE를 사용하는 것은 One에서만 사용하는게 좋을 듯
Many에서 remove를 적용하면 참조 무결성 제약조건에 위반되서 에러가 날 수 있다.

cascade 옵션은 해당 엔티티와 라이프사이클이 비슷할때만 사용하는게 좋을 듯

orphanRemoval

부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제 기능을 제공한다.
One에서만 사용 가능하다.

참조하는 곳이 하나일 때 사용해야함


CascadeType.REMOVE와 orphanRemoval의 차이점

orphanRemoval 옵션을 적용했을때, 엔티티를 삭제했을때는 자식엔티티와의 연관관계도 자동으로 끊어진것으로 판단해서, 자식엔티티도 자동으로 삭제된다.

내생각은 CascadeType.REMOVE 옵션이 orphanRemoval 옵션의 부분집합이라고 생각된다.

현재 CascadeType.PERSIST을 적용해야 orphanRemoval이 작동된다. 버그인가

profile
공부하다가 생긴 궁금한 것들을 정리하는 공간

0개의 댓글