인프런 커뮤니티 질문&답변

디미터님의 프로필 이미지
디미터

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

다대다 cascade remove 관련 질문이있습니다.

작성

·

791

0

안녕하세요 선생님 수업을 듣고 토이 프로젝트 진행중 막히는 부분이 있어 질문드립니다.


다대다 관계를 일대다 다대일로 풀어서 총 3개의 엔티티에서 양방향 연관관계를 가져가는 상황입니다.

이때 서비스계층에서 '다'에 해당하는 가운데 엔티티를 이용해 3개의 연관관계를 한번에 끊고자 cascade.ALL을 사용했는데
오류가 발생했습니다.

저는 이게 1 -> 2 <- 3 이런식의 일 다 일 관계라면 2에서 엔티티를 삭제할때 1,3의 엔티티가 같이 삭제되는데 그러면 1,3과 현재 연관관계를
맺고 있는 다른 DB레코드에도 영향을 주기때문에 ConstraintViolationException 예외가 발생한다고 생각했습니다.

결국 선택한 방식은 3개의 repository에서 각각 지워주는 방식으로 진행했는데 이러면 코드 라인이 3줄이 되고 쿼리도 3번이 나가서
성능적인 이슈가 있다고 생각하는데 다대다를 일대다 다대일로 풀어낸 상황에서 cascade를 사용해 한 코드 라인으로 delete해줄수 있는 방법이 없을까요??

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 랄지님

네 이런 경우 cascade를 사용하시면 안됩니다.

다음을 참고해주세요.

https://www.inflearn.com/questions/31969

감사합니다.

디미터님의 프로필 이미지
디미터

작성한 질문수

질문하기