Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

이지은님의 블로그

Java Spring 기반 일정관리 앱 - 3 Layered Architecture, JDBC 등을 이용한 CRUD 기능 본문

프로젝트

Java Spring 기반 일정관리 앱 - 3 Layered Architecture, JDBC 등을 이용한 CRUD 기능

queenriwon3 2025. 2. 3. 21:23

👉 일정관리 앱 과제 소개

프로젝트 명 : Java Spring Boot로 일정관리 앱을 구현해보자.

배운 내용을 바탕으로 일정 관리 앱를 구현하는 과제입니다.

Postman을 이용한 요청 및 응답으로 일정을 CRUD 및 DB에 저장할 수 있습니다.

 

개발 기간 : 2025.01.27 ~ 2025.02.03 (약 8일)

 

github : https://github.com/queenriwon/scheduleProject

 

개발 환경

  • environment : IntelliJ IDEA, git, github
  • development : JAVA JDK 17, Spring Boot 3.4.2, JDBC, MySQL, swagger 2.3.0

 

 

👉 Lv.0 - API 명세서, ERD 다이어그램

상세 API 명세서, swagger사용

https://flaxen-swan-41e.notion.site/Lv-0-186b649ebbbd80f2a570ccd9ef43adb1

 

Lv. 0 기획단계 | Notion

Made with Notion, the all-in-one connected workspace with publishing capabilities.

flaxen-swan-41e.notion.site

 

 

 

👉 트러블슈팅

https://queenriwon3.tistory.com/101

 

250131 - Java Spring 일정관리 앱 구현과 트러블슈팅: API 명세서, JDBC 연결, DTO와 Entity, CRUD 구현, 동적

▷ 코드 문제풀이[JAVA] 코드카타 - (56)~(60) [JAVA] 코드카타 - (56)~(60)문제 (56) : 과일 장수과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k

queenriwon3.tistory.com

 

https://queenriwon3.tistory.com/102

 

250203 - Java Spring 일정관리 앱 구현과 트러블슈팅: API 명세서, 멀티table과 Repository, Paging, @ExceptionHan

▷ 오늘 배운 것Spring boot 일정관리 개인과제 프로젝트의 도전과제 수행과정을250131 - Java Spring 일정관리 앱 구현과 트러블슈팅: API 명세서, JDBC 연결, DTO와 Entity, CRUD 구현, 동적쿼리 사용 에 이어

queenriwon3.tistory.com

 

 

 

👉 구현 내용

필수 구현 사항

 

Lv.0

  • README.md에 API 명세서 작성하기
  • README.md에 ERD 다이어그램 작성하기
  • schedule.sql에 테이블 생성에 필요한 쿼리문 작성하기

Lv.1

  • 일정 작성 구현(할일, 작성자명, 비밀번호, 작성/수정일 저장)
  • 전체 일정 조회(수정일과 작성자명에 따른 일정 목록 조회)
  • 선택 일정 조회

Lv.2

  • 선택한 일정 수정(비밀번호를 통한 할일, 작성자명 수정)
  • 선택한 일정 삭제(비밀번호를 통해 삭제)

도전 구현 사항

 

 Lv.3 (구현)

  • 작성자에 대해 고유 식별자를 부여하여 동명이인을 구분
  • 작성자는 이름, 이메일, 등록일, 수정일 정보를 가지고 있음
  • 작성자 테이블을 생성하고 일정 테이블에 FK를 생성해 연관관계를 설정

Lv.4 (구현)

  • 페이지네이션을 사용하여 등록된 일정 목록을 페이지 번호와 크기를 기준으로 모두 조회

Lv.5 (구현)

  • 예외 상황에 대한 처리를 위해 HTTP 상태코드와 에러 메시지를 포함한 정보를 사용하여 예외를 관리
  • 수정 삭제시 요청때 보내는 비밀번호가 일치하지 않을 때 예외 발생
  • 잘못된 정보를 조회하려고 할 때 예외 발생
  • 이미 삭제된 정보를 조회하려고 할 때 예외 발생

LV.6  (구현)

  • 할일 200자 이내, 필수값 처리
  • 비밀번호는 필수값 처리
  • 이메일 형식이 유효한지 확인

 

 

👉 구현 핵심

  • 공통응답과 공통예외처리, 페이징
  • 자동으로 DTO와 Entity를 매핑하기(Mapstruct 사용)
  • Optional로 null처리하기
  • swagger로 api 명세서 생성하기
  • 테이블 당 하나의 repository를 이용하여 유지보수와 코드 재사용성 늘리기

 

👉 부족하거나 아쉬운 점, 공부하고 싶은 내용

  • 다양한 테스트를 거쳐 발견하지 못한 오류 발견하기
  • 패키지 및 클래스 구성과 관리
  • Soft delete 또는 보안에 신경쓰기
  • 여러 개의 에러코드를 응답할 수 있도록 하기

 

 

👉 클래스 다이어그램

 

 

👉구현결과

 

작성(POST)

 

 

 조건 조회(GET)

 

전체 조회(GET)

 

단일 조회(GET) 

 

수정(PATCH)

 

 

삭제(PATCH)