게시물 별 좋아요/싫어요 반영 (2)

김학준·2024년 6월 17일
0

게시판

목록 보기
39/44

문제 상황

하지만 (1)과 같은 해결 방법은 좋아요/싫어요를 누를 때마다 예외 객체를 생성하는 문제가 발생한다. 이와 같은 예외 객체는 StackHeap에 쌓이게 되는데 다량의 좋아요/싫어요 클릭이 발생할 경우 StackOverflow가 발생할 수도 있기 떄문에 다음과 같이 변경했다.

해결 방법

public int vote(Integer boardSeq, Integer boardTypeSeq, Integer memberSeq, String isLike) {
		// 처음 좋아요/싫어요를 하는 경우
		if (boardDao.cntVote(boardSeq, boardTypeSeq, memberSeq) == 0) {
			return boardDao.addVote(boardSeq, boardTypeSeq, memberSeq, isLike);
		// 좋아요/싫어요가 이미 있는 경우
		} else { // boardDao.cntVote(boardSeq, boardTypeSeq, memberSeq) == 1
			// 같은 좋아요 또는 싫어요를 한번 더 눌렀을 경우
			if (boardDao.cntVote(boardSeq, boardTypeSeq, memberSeq, isLike) == 1) {
				boardDao.deleteVote(boardSeq, boardTypeSeq, memberSeq);
				return 2;
			}

			// 좋아요 -> 싫어요 OR 싫어요 -> 좋아요
			return boardDao.updateVote(boardSeq, boardTypeSeq, memberSeq, isLike);
		}
}

0개의 댓글