Spring Boot JPA 게시판 조회수 기능 추가
by coco3o반응형
게시판에 조회수 기능을 추가해보자. 기능구현은 생각보다 간단했다.
1. Posts
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Entity
public class Posts extends TimeEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = 500, nullable = false)
private String title;
@Column(columnDefinition = "TEXT", nullable = false)
private String content;
@Column(nullable = false)
private String writer;
@Column(columnDefinition = "integer default 0", nullable = false)
private int view;
}
2. Repository
public interface PostsRepository extends JpaRepository<Posts, Long> {
...
@Modifying
@Query("update Posts p set p.view = p.view + 1 where p.id = :id")
int updateView(Long id);
}
@Modifying 어노테이션은 @Query 어노테이션에서 작성된 조회를 제외한 데이터의 변경이 있는
삽입(Insert), 수정(Update), 삭제(Delete) 쿼리 사용시 필요한 어노테이션이다.
3. Service
/* Views Counting */
@Transactional
public int updateView(Long id) {
return postsRepository.updateView(id);
}
4. Controller
@GetMapping("/posts/read/{id}")
public String read(@PathVariable Long id, Model model) {
PostsResponseDto dto = postsService.findById(id);
postsService.updateView(id); // views ++
model.addAttribute("posts", dto);
return "posts-read";
}
5. 적용
조회수 증가가 잘 적용 되었다.
우선 이정도로 하고, 나중에 쿠키나 세션을 이용해 조회수 중복 카운트를 방지하는 기능을 구현해볼까 한다.
반응형
'📌ETC > Development Log' 카테고리의 다른 글
Spring Boot JPA 게시판 Security 회원가입,로그인 구현 (5) | 2021.12.13 |
---|---|
Spring Boot JPA 게시판 LocalDateTime format 변경하기 (0) | 2021.12.02 |
Spring Boot JPA 게시판 검색 기능 & 검색 페이징 구현 (3) | 2021.11.25 |
Spring Boot JPA 게시판 페이징 처리 구현 (0) | 2021.11.23 |
신입 백엔드 포트폴리오 만들기 - 프로젝트 명세서 (30) | 2021.11.10 |
블로그의 정보
슬기로운 개발생활
coco3o