데이터를 완전히 삭제하지 않고, 삭제된 것처럼 표시만 해놓는 방법이다.
테이블에 deleted, is_deleted, deleted_at 같은 컬럼으로 삭제 여부를 관리한다.
Soft Delete 사용 목적
- 복구 가능
- 참조 무결성 유지
- 유저 탈퇴같은 상황에서 논리적 삭제
나의 경우는 이미 가입했던 이메일은 재가입이 불가능해야 하기 때문에 Soft Delete로 구현해서 중복 데이터를 처리해야 한다.
원래는 생성일, 수정일과 통일 시키기 위해 deleted_at을 사용했지만, 현재 요구사항에서 삭제된지 며칠 지난 사용자를 조회하지 않기 때문에 굳에 삭제 여부를 날짜로 관리할 필요가 없다.
그리고 DB에 데이터를 문자열을 날짜 형식으로 변환할 필요가 없고, null로 데이터를 조회하지 않아도 된다는 점에서 이점이 있다고 판단해서 삭제 여부를 boolean 타입으로 판단할 수 있는 is_deleted를 사용하게 되었다.
'프로젝트 > 팀 프로젝트' 카테고리의 다른 글
[nullnull 티켓] 프로젝트 설계 (0) | 2025.05.16 |
---|---|
[팀 신호등] 아웃소싱 프로젝트 트러블 슈팅 및 기술적 의사결정 (0) | 2025.04.30 |
[팀 INXJ] 마지막 리팩토링 (0) | 2025.04.11 |
[팀 INXJ] 로그인 유저 정보 추출 방식 / 지연로딩의 장점 / setter 대신 update() (0) | 2025.04.09 |
[팀 INXJ] 엔티티 생성 (+JPA에서의 복합키 매핑) (0) | 2025.04.08 |