1 ) 배경
- 처음에 날짜를 직접 입력하게 만들었는데, 조건을 보니 날짜별로 내림차순 정렬이라는 조건 확인.
2) 발단
- 조건을 맞추기 위해 날짜를 내림차순으로 정렬하였으나 가장 최근 기록이 올라오지 않는 것을 확인.
- 이유가 시, 분, 초를 넣어주지 않아서 정렬이 똑바로 되지 않음
3) 전개 & 위기
- 사용자가 데이터를 직접 YYYY-mm-DD HH : mm : sss을 입력하기엔 너무 번거로울 뿐 더러 날짜를 자동으로 실시간 데이터를 넣어주는 게 프로그램에 더욱 적합하다고 생각이 들었으나 자동 입력이 안되는 문제 발생
// 일정 생성
@PostMapping
public ResponseEntity<CalenderResponseDto> createCalender(@RequestBody CalenderRequestDto requestDto) {
// 식별자가 1씩 증가 하도록 만듦
Long calenderId = calenderList.isEmpty() ? 1 : Collections.max(calenderList.keySet()) + 1;
//요청 받은 데이터로 Calender 객체 생성
Calender calender = new Calender(calenderId, requestDto.getAuthor(), requestDto.getContents(),
requestDto.getPassword(), requestDto.getcreateDate(), requestDto.getchangeDate());
// Inmemory DB에 Memo 저장
calenderList.put(calenderId, calender);
return new ResponseEntity<>(new CalenderResponseDto(calender), HttpStatus.CREATED);
}
4) 절정
- 여러 방법을 찾다가 LocalDateTime 이라는 메서드를 발견하여 사용.
5) 결말
- LocalDateTime은 date 타입이기에 날짜와 시간을 넣어주는 변수를 새로 만들어 그 곳에 날짜와 시간 데이터를 넣어주고 그것을 다시 String 타입으로 변환하여 사용. 그 결과 자동으로 날짜와 시간의 데이터를 불러옴.
// 일정 생성
@PostMapping
public ResponseEntity<CalenderResponseDto> createCalender(@RequestBody CalenderRequestDto requestDto) {
// 식별자가 1씩 증가 하도록 만듦
Long calenderId = calenderList.isEmpty() ? 1 : Collections.max(calenderList.keySet()) + 1;
LocalDateTime dateTime = LocalDateTime.now();
// 원하는 포맷 지정
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 포맷 적용
String formattedDate = dateTime.format(formatter);
//요청 받은 데이터로 Calender 객체 생성
Calender calender = new Calender(calenderId, requestDto.getAuthor(), requestDto.getContents(),
requestDto.getPassword(), formattedDate, formattedDate);
// Inmemory DB에 Memo 저장
calenderList.put(calenderId, calender);
return new ResponseEntity<>(new CalenderResponseDto(calender), HttpStatus.CREATED);
}
- 트러블 슈팅으로 적기엔 애매한 내용들...
- 맨 처음 프로젝트를 진행할 때 Interface와 impl 패키지들의 진행 순서와 상호 작용에 대해 이해하는데 많은 시간이 걸림.
- 지금도 100% 완벽히 이해했다곤 자신없음.
- 그로 인해 DB와 Calender을 연동하고 나서 일정 수정, 삭제 API 작성할 때 수정 날짜 데이터 넣기와 비밀번호 검증 부분에서 생각보다 오랜 시간이 걸렸다.
- 처음 DB를 설정할 때 날짜 타입을 DATE로 하여 시간이 입력되지 않는 문제 발생하여 DATETIME으로 타입 변경.
- 초기 설계 부분을 디테일하게 생각하지 못한 점 또한 아쉬웠다.
'TIL > Project' 카테고리의 다른 글
TIL 2024-11-19 (todo-log) (1) | 2024.11.19 |
---|---|
Trouble Shooting ( Calender_JPA) (0) | 2024.11.15 |
TIL 2024-10-26 (숫자 야구 게임 FeedBack) (1) | 2024.10.26 |
Trouble Shooting (숫자 야구 게임) (0) | 2024.10.25 |
TIL 2024-10-22 (숫자 야구 게임 - 2) (0) | 2024.10.22 |