nhyunzi
Optional을 활용한 안정적인 좋아요 기능 구현 본문
메인 페이지에 표시되는 게시물에 대해 하트를 클릭하여 좋아요 상태를 관리하는 기능을 구현했다.
사용자가 하트를 클릭하면 하트가 채워져 표시되고, 다시 클릭하면 하트가 비워져 좋아요를 해제하는 방식이다.
기존의 접근 방식은 getWish 메서드에서 가져온 wish 객체가 null이거나, 메서드 실행 중 예외가 발생할 경우
NullpointerException 이 발생할 위험이 있었다.
이 문제를 해결하기 위해, Optional을 도입하여 isPresent()를 통해 좋아요가 존재할 경우에만 처리 로직이 실행 되도록 했다. 이를 통해 NullpointerException을 방지하여 코드의 안정성을 강화했다.
[기존 코드]
// addWish.jsp
Wish savedWish = wishDao.getWish(wish);
if (savedWish == null) {
wishDao.addWish(wish);
} else {
wishDao.deleteWish(wish);
}
[변경 후 코드 ]
// addWish.jsp
Optional<Wish> savedWish = wishDao.getWish(wish);
if (savedWish.isPresent()) {
wishDao.deleteWish(wish);
} else {
wishDao.addWish(wish);
}