1. JDBC templete 인식 오류
발단 : 구현한 기능을 데이터베이스와 연동하는 과정
전개 : JDBC templete을 적용하고자 했습니다.
위기 : JDBC 인식 오류가 발생하였습니다.
절정 : JDBC 의존성 누락 문제였습니다. 아래와 같은 코드를 추가하지 않아 패키지를 인식하지 못하던 문제였습니다.
build.gradle 에 추가
implementation 'mysql:mysql-connector-java:8.0.33'
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
결말 : 작성 후 제대로 JDBC templete을 적용할 수 있었습니다.
2. Request - Response 구현의 구조화
발단 : 시작 전에 코드를 구조화하는 과정
전개 : 위기 : 코드의 각각 책임을 분리하기 위해 Controller, Repository, Service로 어떻게 분리할 지 고민하였습니다.
절정 : Controller에는 클라이언트로부터 받는 요청 관련 메서드 처리. Repository는 일정 데이터를 저장하고 SQL문을 통한 DB 처리. Service는 요구 기능의 로직을 처리하도록 하였습니다.
결말 : 각 구현부가 책임이 분리되어 효율적으로 진행되었습니다.
3. 비밀번호 검사
발단 : 일정 수정 시 작성자만 수정 가능하도록 구현
전개 : 작성자가 일정 생성할 때 비밀번호를 함께 받아 수정을 진행할 때 비밀번호 일치 여부를 확인
위기 : 수정 요청한 일정의 비밀번호와 기존에 있던 해당 일정의 비밀번호 일치 여부를 어떻게 구현할 것인지 고민이 되었습니다.
절정: RequestDto에 있는 비밀번호를 해당 schedule의 비밀번호와 equals()을 진행하여 일치하지 않을 시 runtimeException을 던지도록 하였습니다.
결말 : 비밀번호 일치 여부를 확인하여 권한을 확인할 수 있었습니다.
4.. 예외 처리
발단 : 일정 삭제 시 해당 일정이 없다면 어떻게 할 지의 예외를 구현
전개 : 위기 : 작성자가 일정 삭제 시에 만약 그 scheduleId의 일정이 없다면 어떻게 할지 고민이 되었습니다.
절정 : null을 어떻게 처리할지 고민하다가 그냥 if (schedule != null) 일 경우 delete를 진행하고 아닐 경우 Exception을 출력하도록 하였습니다.
결말 : 해당 schedule이 없을 경우의 예외 처리가 성공적으로 되었습니다.
5. 일정 저장
발단 : 일정 저장 시에 + DB 다룰 때 각 컬럼의 선언 및 get/set 메서드 구현
전개 : 위기 : INT, VARCHAR 의 형태는 기본 구조로 진행이 가능하지만 TIMESTAMP, DATE 구현의 어려움
절정 : 아래와 같이 LocalDateTime, LocalDate 를 활용하여 구현하였습니다.
LocalDateTime createdAt = schedule.getCreatedAt();
LocalDate date = schedule.getDate();
preparedStatement.setInt(1, schedule.getUserId());
preparedStatement.setString(2, schedule.getTodo());
preparedStatement.setString(3, schedule.getContent());
preparedStatement.setTimestamp(4, Timestamp.valueOf(createdAt)); // LocalDateTime을 Timestamp로 변환
preparedStatement.setString(5, schedule.getPassword());
preparedStatement.setDate(6, Date.valueOf(date)); // LocalDate를 Date로 변환
결말 : 오류 없이 get, set을 진행할 수 있었습니다.
'과제리뷰' 카테고리의 다른 글
[CH5.개인과제] 일정 관리 앱 (JPA) (0) | 2024.11.15 |
---|---|
[숫자야구] 피드백 이후 개선 (0) | 2024.10.29 |
[계산기] 피드백 이후 개선 (0) | 2024.10.29 |
[CH3개인과제] 숫자 야구 (0) | 2024.10.23 |
[CH2개인과제] 계산기 (0) | 2024.10.16 |