spring boot 를 사용하면서 자주 쓰게 되는 클래스 였다. 안다기 보다는 다들 사용하니 나도 따라서 사용해본 클래스였다. 그래서 이해를 해야 코드를 쓰는 내 입장에서는 알아보는 게 필수였다.
유저 객체를 조회 했을 때, 있을 때와 없을 때를 나누어 예외 처리를 할 수 있다.
public StatusResponseDto<String> likeComment(Long id, UserDetailsImpl userDetails) {
Comment comment = commentRepository.findById(id).orElseThrow(
() -> new NullPointerException("존재하지 않는 댓글")
);
Optional<CommentLike> optionalCommentLike = commentLikeRepository.findByCommentAndUser(comment, userDetails.getUser());
if (optionalCommentLike.isPresent()) { // 유저가 이미 좋아요를 눌렀을 때
commentLikeRepository.deleteById(optionalCommentLike.get().getId());
return StatusResponseDto.success("댓글 좋아요 취소");
}
commentLikeRepository.save(new CommentLike(comment, userDetails.getUser()));
return StatusResponseDto.success("댓글 좋아요 성공");
}
과제를 하면서 썼던 코드를 가져와 보았다. 위의 코드를 보면 Optional로 감싼 CommentLike가 보인다. 아래 그 객체가 존재하는 지를 isPresent로 확인해서 좋아요 취소와 추가를 처리하는 것을 볼 수 있다. (솔직히 이 객체가 없었으면... 코드 줄이 길어 졌겠다 싶은 생각이 든다. )
그 이외 Optional을 사용할때 쓸수 있는 메소드가 다양하다. 아래 링크에 그에 대한 자세한 정보가 있는 링크를 남겨 본다.
https://kih0902.tistory.com/56
내일은 제네릭에 대해서 알아 볼까 한다.