-
CacadeType.REMOVE 와 orphanRemoval = true의 차이Spring 2022. 2. 24. 09:15
프로젝트 리팩토링을 진행하면서 연관관계의 데이터(1:N 부모 자식)에 옵션을 넣어줄 때
자식 데이터 삭제시 옵션을 주다가 궁금증이 생겨 찾아보게 되었다.
CascadeType.REMOVE(부모 삭제시 자식 삭제) orphanRemoval = true(고아 객체 삭제) 공통점 (parentRepository.delete(parent)) parent의 삭제시 child도 함께 삭제시키는 것은 동일 차이점 (parent.getChild().remove())
부모 엔티티에서 자식 엔티티 관계 삭제시 관계만 끊어질 뿐 부모 부분이 null로 들어간 자식 엔티티를 삭제하진 않는다.(parent.getChild().remove())
부모 엔티티가 자식 엔티티의 관계를 삭제할 경우 남은 자식은 고아로 취급되어 그대로 사라진다.주의점 삭제하면 안될 상황에서 삭제가 이루어지는 경우를 방지하기 위해서 모두 자식엔티티에 하나의 부모 엔티티가 연관되어 있는 경우에만 사용하도록 주의를 기울이자 ( 참고한 사이트 )
https://tecoble.techcourse.co.kr/post/2021-08-15-jpa-cascadetype-remove-vs-orphanremoval-true/
JPA CascadeType.REMOVE vs orphanRemoval = true
JPA를 공부하다 보면 바로 이해하기 쉽지 않은 개념들을 몇 개 마주친다. 필자는 연관관계 매핑, 영속성 전이, 고아 객체 등이 특히 어려웠다. 이때 와 가 유독 헷갈렸는데, 직접 학습 테스트를 작
tecoble.techcourse.co.kr
https://modimodi.tistory.com/22
Cascade 이해 및 orphanRemoval=true vs CascadeType.REMOVE
현재 개발하고 있는 프로젝트에서 사용하는 테이블들 간의 관계가 매우 복잡하다. 할 때 마다 까먹고, 정확히 사용하고 있는 건지 확신이 서지 않아 이번 기회에 다시 정리하기로 하였다. 먼저,
modimodi.tistory.com
'Spring' 카테고리의 다른 글
ExistsBy쿼리를 직접 작성하기 (0) 2022.03.04 Validation failed for query for method public abstract 오류 발생시 (JPA) (0) 2022.03.04 a collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance 발생 시 (0) 2022.02.16 @ParameterizedTest사용할 때 java.lang.NoSuchMethodException 발생 시 (0) 2022.02.16 existsBy, countBy (JPA) (0) 2022.02.13