이번 과제는 발제 때부터 기대를 많이 했고 더욱 재미있는 과제
라고 생각되어 이전과 다르게 차근차근 이해하며 작업하고 싶었다. 하지만 강의를 다 듣고나서 시작하기 위해 맘먹었을 때 남은 시간은 넉넉하지 못했다. 그래서 이번 과제물은 다음 과제가 나와도 취업해도.. 도전과제를 해낼 때까지 계속 수정을 진행해보려고 한다!
미래를 기약하는 말을 적은데에는 작은 이유가 있었다. 이번 과제는 급성 위경련으로 인해 남은 시간동안 입원해있었다 ^^.. 기말고사, 겨울계절학기, 자격증 공부, 영어 공부가 스트레스 스택을 가득 쌓았었나보다. 그래서 12월 9일 월요일부터 제출하는 순간까지 실습 강의를 되돌려보며 다급하게 작업
했고 지금도 수정중이다..!😵 (주말을 반납하고 올인하자! 했던 과거의 나를 반성하고 있다)
화면 구현하는 부분이 필수는 아니지만 생겼다는 점에서 정말 많이 신났었는데.. 괜한 설레발이었다.
내가 유일하게 가장 자신있고 잘하는 부분이 포함되는데 구현은 커녕..레벨 1도 못하고 있다 🫠
다음 과제는 반드시 발제 당일에 도전하리라.
그래도 하나하나 꼼꼼하게 작업하려고 최대한 노력해보았다.
👀 API 명세서 작성하기
일정 조회는다건 조회
와단건 조회
로 나누었어야하는데 처음 작성할 때에는 단순하게 일정 조회만 작성해서 추가되어있지 않다. 아래에 변경한 API 명세를 추가해보려고 한다!
💡 변경한 API 명세서
👀 ERD 작성하기
+-------------------+ | Schedule | +-------------------+ | id | | title | | date | | time | | description | | password | +-------------------+
ERD는 빈약하지만 현재 상태를 남겨놓은거라 작업하며 추가해보려고 한다.
💡 변경한 ERD
👀 SQL 작성하기
CREATE TABLE Schedule ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL, date DATE NOT NULL, time TIME NOT NULL, description TEXT, password VARCHAR(255) NOT NULL );
❗ 필수 기능 가이드
- 일정 생성(일정 작성하기)
- 일정 생성 시, 포함되어야할 데이터
-할일
,작성자명
,비밀번호
,작성/수정일
을 저장
-작성/수정일
은 날짜와 시간을 모두 포함한 형태
- 각 일정의 고유 식별자(ID)를 자동으로 생성하여 관리
- 최초 입력 시, 수정일은 작성일과 동일
- 전체 일정 조회(등록된 일정 불러오기)
- 다음 조건을 바탕으로 등록된 일정 목록을 전부 조회
-수정일
(형식 : YYYY-MM-DD)
-작성자명
- 조건 중 한 가지만을 충족하거나, 둘 다 충족을 하지 않을 수도, 두 가지를 모두 충족할 수도 있습니다.
-수정일
기준 내림차순으로 정렬하여 조회
- 선택 일정 조회(선택한 일정 정보 불러오기)
- 선택한 일정 단건의 정보를 조회할 수 있습니다.
- 일정의 고유 식별자(ID)를 사용하여 조회합니다.
❗ 필수 기능 가이드
- 선택한 일정 수정
- 선택한 일정 내용 중할일
,작성자명
만 수정 가능
- 서버에 일정 수정을 요청할 때비밀번호
를 함께 전달합니다.
- 작성일은 변경할 수 없으며,
수정일` 은 수정 완료 시, 수정한 시점으로 변경합니다.
- 선택한 일정 삭제
- 선택한 일정을 삭제할 수 있습니다.
- 서버에 일정 수정을 요청할 때
비밀번호
를 함께 전달합니다.
❗ 필수 기능 가이드
- 작성자와 일정의 연결
- 설명
- 동명이인의 작성자가 있어 어떤 작성자가 등록한 ‘할 일’인지 구별할 수 없음
- 작성자를 식별하기 위해 이름으로만 관리하던 작성자에게 고유 식별자를 부여합니다.
- 작성자를 할 일과 분리해서 관리합니다.
- 작성자 테이블을 생성하고 일정 테이블에 FK를 생성해 연관관계를 설정해 봅니다.
- 조건
- 작성자는
이름
외에이메일
,등록일
,수정일
정보를 가지고 있습니다.
- 작성자의 정보는 추가로 받을 수 있습니다.(조건만 만족한다면 다른 데이터 추가 가능)
기존 : 고유 식별자를 통해 작성자를 조회할 수 있도록 기존 코드를 변경합니다.
- 변경 : 작성자의 고유 식별자를 통해 일정이 검색이 될 수 있도록 전체 일정 조회 코드 수정.
- 작성자의 고유 식별자가 일정 테이블의 외래키가 될 수 있도록 합니다.
❗ 필수 기능 가이드
- 설명
- 많은 양의 데이터를 효율적으로 표시하기 위해 데이터를 여러 페이지로 나눕니다.
- 페이지 번호
와
페이지 크기`를 쿼리 파라미터로 전달하여 요청하는 항목을 나타냅니다.- 전달받은 페이지 번호와 크기를 기준으로 쿼리를 작성하여 필요한 데이터만을 조회하고 반환
- 조건
- 등록된 일정 목록을
페이지 번호
와크기
를 기준으로 모두 조회- 조회한 일정 목록에는
작성자 이름
이 포함- 범위를 넘어선 페이지를 요청하는 경우 빈 배열을 반환
- Paging 객체를 활용할 수 있음
❗ 필수 기능 가이드
- 설명
- 예외 상황에 대한 처리를 위해
HTTP 상태 코드(링크)
와에러 메시지
를 포함한 정보를 사용하여 예외를 관리할 수 있습니다.
- 필요에 따라 사용자 정의 예외 클래스를 생성하여 예외 처리를 수행할 수 있습니다.
@ExceptionHandler
를 활용하여 공통 예외 처리를 구현할 수도 있습니다.- 예외가 발생할 경우 적절한 HTTP 상태 코드와 함께 사용자에게 메시지를 전달하여 상황을 관리합니다.
- 조건
- 수정, 삭제 시 요청할 때 보내는
비밀번호
가 일치하지 않을 때 예외가 발생합니다.- 선택한 일정 정보를 조회할 수 없을 때 예외가 발생합니다.
- 잘못된 정보로 조회하려고 할 때
- 이미 삭제된 정보를 조회하려고 할 때
❗ 필수 기능 가이드
- 설명
- 유효성 검사
- 잘못된 입력이나 요청을 미리 방지할 수 있습니다.
- 데이터의
무결성을 보장
하고 애플리케이션의 예측 가능성을 높여줍니다.- Spring에서 제공하는
@Valid
어노테이션을 이용할 수 있습니다.- 조건
할일
은 최대 200자 이내로 제한, 필수값 처리비밀번호
는 필수값 처리- 담당자의
이메일
정보가 형식에 맞는지 확인
1. 적절한 관심사 분리를 적용하셨나요? (Controller, Service, Repository)
2. RESTful한 API를 설계하셨나요? 어떤 부분이 그런가요? 어떤 부분이 그렇지 않나요?
3. 수정, 삭제 API의 request를 어떤 방식으로 사용 하셨나요? (param, query, body)
작업 후기
소요시간
: 아직 알 수 없음
난이도
: 상
>> Java : JDBC를 사용한 일정 관리 앱 만들기 GitHub Code 바로가기
다 만들어진 코드는 위의 깃허브에 올려놓았다.