java 배우기/TIL

Spring 게시판 조회수 증가 코드 넣기

checkuu 2024. 9. 4. 17:53

게시판 단건 조회시 조회수 증가하는 기능 구현

 

게시판 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을 붙여주니 제대로 작동하였다.