완전한 삭제가 아니라 반 삭제처럼 데이터를 일시적으로 비활성화하는 것을 "소프트 삭제(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 엔티티에 컬럼 추가
2. Controller 변경
=> 겉으로는 delete이지만 실제로는 isDeleted 컬럼에 true를 저장하는 일이기 때문에 Post로 처리
3. Service 변경
=>isDeleted 컬럼에 true 값을 반환하여 겉으로는 삭제처리
'개발일지 > 2023_한이음' 카테고리의 다른 글
[개발]🤦🏻♀️고민하기 - review 기능에 커스텀 DTO 적용 (1) | 2023.06.17 |
---|---|
[개발]🎁배운점 - @JsonIgnore (0) | 2023.06.16 |
[개발외]멘토링 진행 - 2023/6/1 (0) | 2023.06.14 |
[개발]🚨ERROR - 객체vs기본 자료형의 불일치 (0) | 2023.06.12 |
[개발]🤦🏻♀️고민하기 - review controller 리팩토링 (0) | 2023.06.04 |