프로젝트에 회원 탈퇴 기능을 추가하는 것은 사용자가 자신의 계정을 삭제할 수 있게 하는 중요한 기능입니다. 이 기능을 통해 사용자는 자신의 정보를 시스템에서 완전히 제거할 수 있습니다. 연관관계 매핑을 활용하여 사용자와 관련된 모든 데이터를 함께 삭제하는 로직을 구현했습니다.
UserController 수정
UserController에 회원 탈퇴를 위한 엔드포인트를 추가합니다. 사용자 ID는 토큰 컨텍스트에서 추출합니다.
@DeleteMapping
public void deleteUser() {
TokenContext context = TokenContextHolder.getContext();
Long userId = context.getUserId();
userService.deleteUser(userId);
}
PostRepository 수정
PostRepository에서는 사용자와 연관된 모든 게시물을 삭제하기 위한 메소드를 정의합니다. 이 메소드는 User 엔티티를 매개변수로 받아 해당 사용자와 연관된 모든 게시물을 삭제합니다.
public interface PostRepository extends JpaRepository<Post, Long> {
Optional<Post> deleteAllByUser(User user);
}
UserService 수정
UserService에서는 사용자 삭제 로직을 구현합니다. 사용자와 연관된 모든 데이터(예: 게시물, 댓글 등)를 삭제한 후 사용자 계정을 삭제합니다.
@Transactional
public void deleteUser(Long userId) {
User user = userRepository.findById(userId).orElseThrow(
() -> new BadRequestException("회원가입을 해주세요,")
);
postRepository.deleteAllByUser(user);
userRepository.delete(user);
}
결론
이렇게 구현된 회원 탈퇴 기능을 통해, 사용자는 자신의 계정을 시스템에서 완전히 삭제할 수 있으며, 연관관계 매핑을 통해 사용자와 관련된 모든 데이터도 함께 삭제됩니다. 이 기능은 사용자의 데이터 프라이버시와 관련된 요구 사항을 충족시키며, 시스템 내에서 사용자 데이터를 효과적으로 관리할 수 있게 합니다.
'프로젝트 (Java) > 예약마켓' 카테고리의 다른 글
[프로젝트] 21. 뉴스피드 알림 기능 추가 (0) | 2024.01.29 |
---|---|
[프로젝트] 20. 뉴스피드 기능 추가 (0) | 2024.01.29 |
[프로젝트] 18. 게시물 댓글 작성 및 삭제 기능 (0) | 2024.01.26 |
[프로젝트] 17. 게시물 좋아요 기능 (0) | 2024.01.26 |
[프로젝트] 16. 게시물 전체 조회 및 ID로 상세 정보 조회 (0) | 2024.01.26 |