과제리뷰

[CH4개인과제] 일정 관리 앱 서버

bibibibibiN 2024. 11. 8. 14:54

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