게시판 단건 조회시 조회수 증가하는 기능 구현
게시판 entity에 아래와 같은 코드를 삽입
@Column(name = "views")
private int viewCount = 0; // 조회수
public void increaseViewCount(){
this.viewCount ++; //조회수 증가 메서드
}
게시판 단건 조회에 조회될때마다 increasViewCount가 작동하게 코드 작성
변경 전
public PostResponseDto getPostById(Long id) {
return new PostResponseDto(postRepository.findById(id).orElseThrow());
}
변경 후
@Transactional
public PostResponseDto getPostById(Long id) {
Post post = postRepository.findById(id).orElseThrow();
post.increaseViewCount();
return new PostResponseDto(postRepository.findById(id).orElseThrow());
}
위와 같이 post를 생성해서 카운터수 증가시켜주는걸로 했다.

게시판 조회를 5번하여 5증가한 모습

데이터베이스내 post 테이블에서도 증가했다.
처음에는 아무리 조회를 해도 1만 증가 후 멈추고 db에 반영이 안되었다.
어노테이션 Transactional 때문이었다.
변경전 코드에서 볼 수 있듯이 기존에는 조회서비스라서 @Transactional 이 안붙은 상태여서 service 위에 @Transactional( readOnly = true) 로 인해서 읽기만 가능한 상태였던 것이었다. 그래서 연동도 안되고 카운터수도 초기화 되었다.
@Transactional을 붙여주니 제대로 작동하였다.
'java 배우기 > TIL' 카테고리의 다른 글
| self Invocation (0) | 2024.09.06 |
|---|---|
| 팀프로젝트 like 기능 구현하기 (0) | 2024.09.05 |
| Spring 좋아요 중복 방지 (1) | 2024.09.03 |
| 깃허브 브랜치 삭제 반영하기 (0) | 2024.09.03 |
| "Unsuccessful: drop table if exists user cascade" Spring 작동 오류 해결하기 (1) | 2024.08.30 |