Board 안에 있는 Post의 총 개수를 구하는 방법
이를 구현하는 다양한 방법이 있지만 데이터의 양에 따라 방법이 달라진다. 가령 초기 데이터 양이 많지 않을 때는 구현하기 쉬운 방법을 사용하고 점차 서비스 이용자가 증가하여 데이터 양이 많아진다면 이에 맞추어 개선해 나간다.
1. List의 사이즈를 반환
BoardEntity를 보면 Post들이 리스트로 담겨있다. List의 사이즈를 반환하도록 service 를 구현하는 방법이 있다.
하지만 이 방법은 보드안의 포스트들을 모두 가져와 메모리 관련한 문제가 있다.
@Override
@Transactional
public Long getBoardTotalCnt(Long id)
{
BoardEntity brd = boardRepository.findById(id).orElseThrow(() -> new BoardNotFoundException(id));
return Long.valueOf(brd.getPosts().size());
}
package com.example.swcoaching.board.jpa;
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import java.util.ArrayList;
import java.util.List;
@Getter
@NoArgsConstructor
@Table(name = "board")
@Entity
public class BoardEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 게시판 제목
*/
@Column(length = 1000)
private String title;
/**
* 게시판 설명
*/
@Column(columnDefinition = "text")
private String remark;
@Column
public Long totalcnt;
/**
* 게시물
*/
@OneToMany(mappedBy = "board")
public List<PostEntity> posts = new ArrayList<>();
public BoardEntity(String title, String remark, long id) {
this.title = title;
this.remark = remark;
this.id = id;
}
public void AddTotalCnt()
{
this.totalcnt+=1;
}
public void MinusTotalCnt()
{
this.totalcnt-=1;
}
public void ZeroCnt()
{
this.totalcnt = 0L;
}
}
2. Board에 column을 추가
Board에 column(totalcnt)을 추가하여 post가 추가, 삭제 될 때마다 값을 변경한다.
3.새로운 테이블 추가
https://jinioh88.tistory.com/57
[개발이야기 - 스프링] JUnit5에서 Exception 테스트
최근 스프링 부트는 테스트 유닛으로 JUnit4에서 JUnit5(jupiter)로 변경되었다. 토비의 스프링을 스프링 부트 버전으로 연습하다가 기존에 사용했던 JUnit4 방식의 Exception 테스트가 안돼 찾아보고 정
jinioh88.tistory.com
728x90
'2022-Spring-SW-Coaching' 카테고리의 다른 글
Maridb & docker (0) | 2022.07.08 |
---|---|
git rebase/reflog (0) | 2022.07.08 |
CI/CD Github Actions로 시작해보기 (0) | 2022.07.08 |
CI/CD (0) | 2022.07.08 |
2022 SKKU SW-coaching 4주차 코드 리뷰 (0) | 2022.07.01 |