소프트 딜리트(Soft Delete)는 데이터를 실제로 삭제하지 않고, 삭제된 것처럼 표시하는 방식이다. 데이터베이스에서 해당 행(레코드)을 물리적으로 제거하지 않고, 특정 컬럼(예: deletedAt 또는 isDeleted)을 통해 삭제된 것으로 취급하는 방식이다.
이 방식의 장점은 삭제된 데이터를 나중에 복구하거나, 삭제 이력을 확인할 수 있다는 점이다. 또한, 삭제된 데이터가 필요하지 않은 조회에서 제외되도록 할 수 있다.
소프트 딜리트가 구현되는 방식:
deletedAt 타임스탬프를 활용하는 경우: deletedAt 컬럼에 값이 null이 아니라면, 해당 레코드는 삭제된 것으로 간주된다.isDeleted 플래그를 사용하는 경우: isDeleted라는 불리언 컬럼을 추가하여 true로 설정된 경우 삭제된 것으로 간주된다.예를 들어, deletedAt이 null인 경우에만 조회하도록 쿼리를 작성하거나, JPA에서 소프트 딜리트를 자동으로 처리하는 방법을 설정할 수 있다.
// 예시: 삭제되지 않은 데이터만 조회하는 JPA 메서드
public interface UserEntityRepository extends JpaRepository<UserEntity, Long> {
List<UserEntity> findAllByDeletedAtIsNull();
}
이렇게 하면, deletedAt이 null인, 즉 삭제되지 않은 유저만 조회할 수 있게 된다.