📚 배경
1. 탈퇴한 회원의 계정으로 중복 계정 생성을 막을 때
2. 데이터 분석을 위해서 탈퇴한 회원에 대한 데이터가 필요할 때
3. 서비스 정책 상 탈퇴한 유저의 정보를 정해진 기간동안 유지할 필요가 있을 때
등 위와 같은 이유로 soft Delete 가 사용된다.
직접 User Entity 에 userStatus 라는 필드를 만들어서 삭제 유무를 파악했었는데, Spring Boot 에서 이를 지원해주기 때문에 활용하는 방법에 대해서 알아보았다.
User
@Getter
@Entity
@SQLDelete(sql = "UPDATE users SET deleted = true WHERE id = ?")
@SQLRestriction("deleted = false")
@NoArgsConstructor
@Table(name = "users")
public class User extends Timestamped {
@SQLDelete(sql = "UPDATE users SET deleted = true WHERE id = ?")
해당 annotation 을 활용해서 User 가 delete 되면 데이터가 직접 삭제되는 것이 아니라 deleted 를 true 로 바꾸는 Soft Delete 기능이 구현되도록 설정할 수 있다.
@SQLRestriction("deleted = false")
해당 annotation 을 사용해서 user 조회시에 deleted 필드의 값이 false 값들만 조회되도록 설정할 수 있다.
User
private boolean deleted = Boolean.FALSE;
필드를 추가해준다.
UserRepository
@Query("SELECT u FROM User u WHERE u.deleted = true")
List<User> findAllDeleted();
해당 메서드를 통해서 삭제된 User 만 조회하는 것도 가능하다.
'컴퓨터 프로그래밍 > Spring' 카테고리의 다른 글
[Spring] Swagger UI 적용 (3) | 2024.11.02 |
---|---|
[Spring] 페이지네이션 정리 코드 (0) | 2024.10.23 |
[Spring] Discord 알림 구현 (0) | 2024.10.16 |
[Spring] TransactionalEventListener (0) | 2024.10.11 |
[Spring] Projection 및 예시코드 설명 (0) | 2024.10.07 |