소프트 딜리트(Soft Delete)

CosmoNumb·2024년 10월 28일

참고

목록 보기
4/5

소프트 딜리트(Soft Delete)는 데이터를 실제로 삭제하지 않고, 삭제된 것처럼 표시하는 방식이다. 데이터베이스에서 해당 행(레코드)을 물리적으로 제거하지 않고, 특정 컬럼(예: deletedAt 또는 isDeleted)을 통해 삭제된 것으로 취급하는 방식이다.

이 방식의 장점은 삭제된 데이터를 나중에 복구하거나, 삭제 이력을 확인할 수 있다는 점이다. 또한, 삭제된 데이터가 필요하지 않은 조회에서 제외되도록 할 수 있다.

소프트 딜리트가 구현되는 방식:

  • deletedAt 타임스탬프를 활용하는 경우: deletedAt 컬럼에 값이 null이 아니라면, 해당 레코드는 삭제된 것으로 간주된다.
  • isDeleted 플래그를 사용하는 경우: isDeleted라는 불리언 컬럼을 추가하여 true로 설정된 경우 삭제된 것으로 간주된다.

소프트 딜리트의 이점

  1. 데이터 복구: 실수로 삭제한 데이터를 복구할 수 있다.
  2. 데이터 추적: 삭제된 데이터의 삭제 시점과 이유 등을 추적할 수 있다.
  3. 참조 무결성 유지: 외래 키로 참조된 데이터를 삭제할 때 다른 테이블의 참조 관계를 깨지 않고 보존할 수 있다.

소프트 딜리트 사용 예시

예를 들어, deletedAt이 null인 경우에만 조회하도록 쿼리를 작성하거나, JPA에서 소프트 딜리트를 자동으로 처리하는 방법을 설정할 수 있다.

// 예시: 삭제되지 않은 데이터만 조회하는 JPA 메서드
public interface UserEntityRepository extends JpaRepository<UserEntity, Long> {
    List<UserEntity> findAllByDeletedAtIsNull();
}

이렇게 하면, deletedAt이 null인, 즉 삭제되지 않은 유저만 조회할 수 있게 된다.

0개의 댓글