일정 관리 앱 서버 만들기_트러블 슈팅.TIL -> 과제회고 KPT
트러블 슈팅 오류의 주제를 제목으로 변경
Java 언어를 활용하여 Spring Framework를 사용하여 본격적으로 서버 만드는 연습을 시작했다.
과제는 일정 관리 앱 서버를 만드는 것!
도전 기능에 있는 부분도 해보고 싶었지만, 필수 기능 구현도 오류가 많이 발생해서 시간상 구현하지 못하였다.
다행인 것은 JPA로 넘어가기 전에 JDBC를 먼저 사용해서 단계를 차근차근 밟아가기 때문에 좀 더 연습이 될 것 같다.
!!최대한 많이 해보고 익숙해지는 것이 중요!!
개발 전, 공통 조건
- 일정 작성, 수정, 조회 시 반환 받은 일정 정보에 비밀번호는 제외
- 일정 수정, 삭제 시 선택한 일정의 비밀번호와 요청할 때 함께 보낸 비밀번호가 일치할 경우에만 가능
- 비밀번호가 일치하지 않을 경우 적절한 오류 코드 및 메세지를 반환해야 한다.
- 일정 생성, 수정, 삭제 시 적절한 상태코드를 반환해야 한다.
- 참고: HTTP 상태 코드(링크)
- 3 Layer Architecture 에 따라 각 Layer의 목적에 맞게 개발해야 한다.
- CRUD 필수 기능은 모두 데이터베이스 연결 및 JDBC 를 사용해서 개발해야 한다.
- JDBC 설정은 강의와 강의에서 제공해주는 코드 스니펫을 참조
- ‼ JPA가 아닌 JDBC로 하는 이유?
- 데이터베이스와의 연동을 위해 JDBC를 사용해보며, 기본적인 SQL 쿼리 작성과 데이터 관리를 연습
- 충분히 익숙해지고 난 후, JPA를 도입할 예정.
- 일정 생성(일정 작성하기)
- 일정 생성 시, 포함되어야할 데이터
- 할일, 작성자명, 비밀번호, 작성/수정일을 저장
- 작성/수정일은 날짜와 시간을 모두 포함한 형태
- 각 일정의 고유 식별자(ID)를 자동으로 생성하여 관리
- 최초 입력 시, 수정일은 작성일과 동일
- 일정 생성 시, 포함되어야할 데이터
- 전체 일정 조회(등록된 일정 불러오기)
- 다음 조건을 바탕으로 등록된 일정 목록을 전부 조회
- 수정일 (형식 : YYYY-MM-DD)
- 작성자명
- 조건 중 한 가지만을 충족하거나, 둘 다 충족을 하지 않을 수도, 두 가지를 모두 충족할 수도 있다.
- 수정일 기준 내림차순으로 정렬하여 조회
- 다음 조건을 바탕으로 등록된 일정 목록을 전부 조회
- 선택 일정 조회(선택한 일정 정보 불러오기)
- 선택한 일정 단건의 정보를 조회할 수 있다.
- 일정의 고유 식별자(ID)를 사용하여 조회
- 선택한 일정 수정
- 선택한 일정 내용 중 할일, 작성자명 만 수정 가능
- 서버에 일정 수정을 요청할 때 비밀번호를 함께 전달
- 작성일 은 변경할 수 없으며, 수정일 은 수정 완료 시, 수정한 시점으로 변경
- 선택한 일정 내용 중 할일, 작성자명 만 수정 가능
- 선택한 일정 삭제
- 선택한 일정을 삭제할 수 있다.
- 서버에 일정 수정을 요청할 때 비밀번호를 함께 전달
- 선택한 일정을 삭제할 수 있다.
🎯 트러블 슈팅
배경
NPE(NullPointerException)을 피하기 위해 null 여부를 검사해야 하고, null 검사를 해야하는 변수가 많을 수록 코드가 복잡해진다. null 대신 초기값을 사용하는 것을 권장한다. 이때 Optional<T> 클래스를 사용해 NPE를 방지할 수 있도록 한다. Optional<T> 은 null이 올 수 있는 값을 감싸는 Wrapper 클래스이고 참조하더라도 NPE가 발생하지 않도록 돕는다. Optional 클래스는 아래와 같은 value에 값을 저장하기 때문에 null이 더라도 바로 NPE가 생기지 않는다.
발단
전개
해결...
위기
절정
결말
TIL 11월 8일
'TIL (ToDay I LearNEd) > K P T (keeP, pRoBlem, Try) & 트러블슈팅' 카테고리의 다른 글
뉴스피드 프로젝트_트러블 슈팅.TIL (0) | 2024.11.21 |
---|---|
순환 참조란? Circular Dependency (일정 관리 앱 서버 DEVELOP 트러블 슈팅) (1) | 2024.11.15 |
숫자 야구 게임_트러블 슈팅.TIL (0) | 2024.10.24 |
계산기 필수 기능 구현_트러블 슈팅.TIL (0) | 2024.10.16 |
[KPT] 첫 미니 프로젝트 (0) | 2024.10.07 |