개인프로젝트/기능프로그램_오늘뭐입지
20240514_미세먼지 파트 조정
일일일코_장민기
2024. 5. 14. 14:09
728x90
1. pk 변경
- 기존의 serial 형태의 pk는 데이터 insert / update를 시키는데 문제를 계속 일으켰다.
- save(), saveAll()은 pk를 기준으로 데이터를 파악하는데 serial로 계속 늘어나니 계속 insert만 되었다.
--> pk를 serial id에서 StationName 컬럼으로 변경했다.
==> 당연히 vo과 dto도 변경
2. dto setter 변경
- 기존에는 setter 단계에서 모든 변경을 한 채 전송했다.
ex) grade가 1이면 좋음, 단위 붙이기 등
--> grade에서 좋음 상태면 1로 취급이 안 되기 때문에 default로 넘어가는 문제 발생
==> 1, 좋음 -> 좋음이 되도록 변경했다
public void setPm25grade(String pm25grade) {
this.pm25grade = switch (pm25grade){
case "1", "좋음" -> "좋음";
case "2", "보통" -> "보통";
case "3", "나쁨" -> "나쁨";
case "4", "매우나쁨" -> "매우나쁨";
default -> "점검 중";
};
}
--> 단위가 중복해서 붙은 문제도 발생
==> 삭제 후 jsp에서 단위를 붙이는 것으로 변경했다.
이런 문제는 DB에 변경된 데이터가 들어가기 때문에 발생하는 문제였다.
3. delete & save에서 saveAll로 변경
- 1에서 pk가 바뀐 덕분에 saveAll()을 사용할 수 있게 되었다.
- saveAll()은 데이터가 늘어날 수록 save()에 비해 속도 차이가 많이 나기 때문에 기존에 기록한 개선점 중 하나이기도 했다.
- 또한 DB의 데이터를 지웠다가 넣는 것도 아니기 때문에 지운 뒤에 문제가 생겨서 데이터를 불러오지 않게 되는 위험도 억제할 수 있었다.
public void dustRequest(List<PaticulatemattervoDto> paticulateMatterDtoList) {
List<Paticulatemattervo> paticulatemattervoList = new ArrayList<>();
for (PaticulatemattervoDto dto : paticulateMatterDtoList) {
Paticulatemattervo paticulatemattervo = new Paticulatemattervo();
BeanUtils.copyProperties(dto, paticulatemattervo);
paticulatemattervoList.add(paticulatemattervo);
}
log.info("paticulatemattervoList: {}", paticulatemattervoList);
dustApiRepository.saveAll(paticulatemattervoList);
}