🚗 Backend Toy Project
[스프링부트 게시판] 33. 댓글 알림 기능
다른 사용자가 게시글에 댓글을 남길 경우 해당 게시글을 작성한 사용자에게 알림이 뜨도록 구현해보았습니다. 실시간으로 알림을 보낼 필요는 없어보였기 때문에 인터셉터를 통한 비연결형으로 구현하였습니다. 인터셉터에 대한 자세한 설명은 아래 링크에서 확인하실 수 있습니다. Spring Interceptor 개념 정리, 적용법 📝 인터셉터란? 인터셉터(Interceptor)는 DispatcherServlet과 컨트롤러(Controller) 사이에서 요청(request)을 가로채는 역할을 수행합니다. 인터셉터를 사용하면 기존의 로직을 수정하지 않고 비즈니스 로 daegwonkim.tistory.com 📝 ReplyRepository 우선 다음과 같이 SQL 구문을 작성하여 함수를 구현하였습니다. package co..
[스프링부트 게시판] 32. 이전에 봤던 글 표시
게시판에서 로그인 한 사용자가 이전에 봤던 글이 있다면 해당 되는 글을 옅게 표시하는 기능을 추가하여 본 글과 보지 않은 글을 구분할 수 있도록 구현해보았습니다. 기능 구현은 각 게시글 객체마다 해당 게시글을 방문한 사용자에 대한 리스트를 저장하고 이후 현재 접속한 사용자와 리스트에 저장된 사용자를 비교하는 방식으로 구현하였습니다. 📝 Board 우선 Board 엔티티에 해당 게시글을 본 사용자 리스트를 저장하기 위해 새로운 변수를 추가해주었습니다. package com.cos.blog.model; ... @Entity @Data @AllArgsConstructor @NoArgsConstructor @Builder public class Board { ... private String seen; ... ..
[스프링부트 게시판] 31. 이전글, 다음글 구현
게시글 상세보기 페이지에서 이전글 또는 다음글로 바로 이동할 수 있도록 버튼을 생성하고 구현해주었습니다. 기능 구현은 이전에 구현했던 코드와 비슷하여 어렵지 않았으나 쿼리를 짜는데 시간이 조금 들었습니다. 📝 BoardRepository 우선 쿼리는 아래와 같이 작성하였습니다. SELECT * FROM board WHERE id = (SELECT prev_no FROM (SELECT id, LAG(id, 1, -1) OVER(ORDER BY id) AS prev_no FROM board) B WHERE id = :id) SELECT * FROM board WHERE id = (SELECT prev_no FROM (SELECT id, LEAD(id, 1, -1) OVER(ORDER BY id) AS pre..
[스프링부트 게시판] 30. 게시판 정렬 기능 구현
최신순, 인기순(조회수), 추천순으로 게시판을 정렬하는 기능을 구현해보았습니다. Controller에서 파라미터로 정렬 타입을 전달받고 PageRequest.of 메서드를 사용하여 정렬 방식을 변경하는 식으로 구현하려 하였으나 해당 방법을 사용할 경우 데이터를 제대로 정렬하여 뽑아오지만 페이징이 되지 않는 오류가 발생하여 조금 다른 방법을 사용하였습니다. 📝 RecommendRepository, RecommendService 우선 추천순 정렬을 위해 Repository에 코드를 추가해주었습니다. package com.cos.blog.repository; ... public interface RecommendRepository extends JpaRepository{ ... @Modifying @Query..