항해99

항해99 40일차 TIL1 - JPA - Cascade

자몽포도 2023. 1. 20. 16:52

관계형 데이터베이스 내 데이터 삭제는 물리 삭제, 논리 삭제가 존재합니다.

 

먼저, 지난번에 다루었던 논리 삭제에 대한 글을 참고하시면 다양한 삭제 방법에 대해 아실 수 있을 것 같습니다.

24일차 TIL 물리삭제/논리삭제 - 바로가기

 

항해99 24일차 TIL1 - 물리 삭제(hard delete)/논리 삭제(soft delete)

WHAT : 무엇을 알게되었는지 SO : 그래서 느낀점 오늘 TIL에서는 물리 삭제/논리 삭제에 대해 적어보려고 합니다. 아래 코드에서 바람직하지 못한 부분은 무엇일까요? public ResultDto delete(Long id, Passwor

jxxhxxxmldiary.tistory.com

 

엔티티 간 연관관계를 맺고 CRUD API를 만들어놓고 Delete시, 볼 수 있는 SQL 예외 중 하나는 참조 무결성 제약 위반입니다. 이를 해결하기 위해서는 외래키의 참조값을 Null 만들고 데이터를 삭제하는 것입니다. 하지만 서비스가 커질수록 외래키를 Null로 만드는 로직을 직접 작성하기는 어렵습니다. 이를 JPA를 통해 쉽게 해결하는 방법이 Cascade 옵션입니다. 

8.4 영속성 전이 CASCADE - 노션 페이지

 

8.4 영속성 전이 CASCADE

참조 무결성, CASCADE가 필요한 이유

immense-joke-8e7.notion.site

 

향후 실전 프로젝트에 들어가게 되면 삭제 로직을 물리/논리 둘다 구현하는것이 더 적절해 보이기에 이번 기회에 정리하였다:)