개발일지/2023_한이음

[개발]🤦🏻‍♀️고민하기 - Review_논리적 삭제(logical delete) 도입

기억지기 개발자 2023. 6. 15. 11:32
완전한 삭제가 아니라 반 삭제처럼 데이터를 일시적으로 비활성화하는 것을 "소프트 삭제(soft delete)" 또는 "논리적 삭제(logical delete)"라고 합니다.

소프트 삭제는 데이터를 데이터베이스에서 완전히 삭제하지 않고, 대신 삭제된 표시를 나타내는 특정 칼럼(예: "isDeleted")의 값을 변경하여 해당 데이터를 비활성화시킵니다. 이렇게 삭제된 표시를 가진 데이터는 일반적으로 조회 및 수정 작업에서 필터링되어 처리됩니다.

소프트 삭제는 데이터 복구 가능성이 있고, 삭제된 데이터의 이력을 추적할 수 있는 장점이 있습니다. 또한, 완전한 삭제보다 더 안전한 방법으로 데이터를 관리할 수 있습니다.
스프링 웹 프로젝트에서 소프트 삭제를 구현하기 위해서는 데이터베이스 스키마에 삭제 여부를 나타내는 칼럼을 추가하고, 해당 칼럼을 사용하여 데이터를 조회하거나 수정하는 로직을 개발해야 합니다. 이는 프로젝트의 구조와 데이터베이스 ORM 도구에 따라 달라질 수 있습니다.

⬇️기존 review에 controller, service

 //Controller - delete기능
    @DeleteMapping(value = "/{id}")
    public void delete(@PathVariable Long id) {
        reviewService.delete(id);
    }
 
 //service - delete 기능
 public void delete(Long id){
        repository.deleteById(id);
    }

⬇️논리적 삭제 도입후....!

1. Review 엔티티에 컬럼 추가

review entity

2. Controller 변경

=> 겉으로는 delete이지만 실제로는 isDeleted 컬럼에 true를 저장하는 일이기 때문에 Post로 처리

reviewController

3.  Service 변경

=>isDeleted 컬럼에 true 값을 반환하여 겉으로는 삭제처리

reviewService