241121 Soft Delete 구현하기

0

회원탈퇴 : Soft Delete

  • Soft Delete (논리 삭제) : db에서 데이터 자체를 지워버리는 Hard delete 방식과는 달리 db에 데이터를 남겨놓되 status를 비활성화 시키는 방식

  • 회원가입 시 탈퇴 유저의 이메일과 중복체크를 하기 위해 Soft Delete 방식을 채택
  • 탈퇴 유저의 이메일과 중복되게 회원가입을 요청할 시 400 Bad Request 오류 발생
  • 오류 예시)

구현방법

  • User Entity에 회원의 탈퇴 상태를 담을 수 있는 필드(deleted) 생성
    • *private boolean* deleted = Boolean.FALSE;
  • 삭제 방식 변경
    • @SQLDelete 사용 : jpa repository의 delete 메서드를 사용할 때 update쿼리를 사용하게끔 설정
      • @SQLDelete(sql = "UPDATE user SET deleted = true WHERE id = ?")
  • 쿼리 방식 변경
    • @SQLRestriction("deleted = false") 사용 : repository 영역에서 db의 data에 접근할 때 deleted 값이 false 인 필드에만 접근

  • 삭제 메서드
    • hard delete를 할 때처럼 jpa repository의 delete 메서드 사용

0개의 댓글