Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Tags
more
Archives
Today
Total
관리 메뉴

이지은님의 블로그

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

프로젝트

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

queenriwon3 2025. 2. 13. 09:35

👉 일정관리 앱(develop) 과제 소개

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

JPA를 바탕으로 일정 관리 앱를 구현하는 과제입니다.

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

 

개발 기간 : 2025.02.07 ~ 2025.02.13 (약 6일)

 

github : https://github.com/queenriwon/ScheduleDevelopProject

 

GitHub - queenriwon/ScheduleDevelopProject

Contribute to queenriwon/ScheduleDevelopProject development by creating an account on GitHub.

github.com

 

 

개발 환경

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

 

 

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

  • API명세서 - Postman 사용

https://documenter.getpostman.com/view/41347390/2sAYXBFKXD

 

일정 관리 앱 Develop 프로젝트

The Postman Documenter generates and maintains beautiful, live documentation for your collections. Never worry about maintaining API documentation again.

documenter.getpostman.com

 

  • API명세서 - 설계단계 작성

https://flaxen-swan-41e.notion.site/Lv-0-192b649ebbbd80eda2b9ee81449163ec

 

Lv. 0 기획단계 | Notion

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

flaxen-swan-41e.notion.site

 

 

  • ERD 다이어그램

 

👉 트러블슈팅

https://queenriwon3.tistory.com/109

 

250210 - Java Spring 일정관리 앱 구현과 트러블 슈팅: 일정과 유저 CRUD, Validation, PasswordEncoder, 공통 예

▷ 오늘 배운 것이때까지 작성했던 일정 관리 앱을 업그레이드 한 과정에 대해 블로그를 작성해보겠다.  >0. API 명세서 작성하기1. JPA를 이용한 Entity작성2. DTO 만들기3. User 등록(회원가입) 구현 (

queenriwon3.tistory.com

 

https://queenriwon3.tistory.com/110

 

250211 - Java Spring 일정관리 앱 구현과 트러블 슈팅: 로그인 filter, service와 repository 설계, 댓글 CRUD, P

▷ 오늘 배운 것이때까지 작성했던 일정 관리 앱을 업그레이드 한 과정에 대해 블로그를 작성해보겠다. >1. 필터를 이용한 로그인 기능2. 로그아웃 기능 구현3. 서비스 계층에서 여러 개의 repos

queenriwon3.tistory.com

 

https://queenriwon3.tistory.com/111

 

250212 - Java Spring 일정관리 앱 구현과 트러블 슈팅: 양방향 관계, 로그인 filter의 예외처리와 한계,

▷ 오늘 배운 것이때까지 작성했던 일정 관리 앱을 업그레이드 한 과정에 대해 블로그를 작성해보겠다. >1. 일정 조회 시 댓글 개수 출력(양방향 관계)2. swagger를 filter 예외로 출력하는방법3. Ar

queenriwon3.tistory.com

 

 

 

 

👉 구현 내용

필수 구현 사항

 

Lv.1

  • CRUD 기능이 정상적으로 구동되는가? 
  • 일정 엔티티에 '작성 유저명, 할일 제목, 내용, 작성일' 필드가 포함되었는가?

Lv.2

  • CRUD 기능이 정상적으로 구동되는가?
  • 유저 엔티티에 '유저명, 이메일, 작성일, 수정일' 필드가 포함되었는가?
  • 일정 엔티티가 작성 유저명 대신 유저 고유 식별자 필드를 포함하고 있는가?

Lv.3

  • 유저 엔티티에 비밀번호 필드가 추가되었는가?

Lv.4

  • 이메일과 비밀번호를 사용하여 로그인 기능이 정상적으로 작동하는가?
  • 필터를 통해 요청 전후에 인증 처리가 잘 이루어지고 있는가?
  • 회원가입과 로그인 요청은 인증 처리에서 제외되고 있는가?
  • 로그인 실패 시 401 정확하게 반환되는가?

도전 구현 사항

 

 Lv.5 (구현)

  • @Valid 어노테이션을 사용하여 객체의 제약 조건을 검증하는 기능이 구현되었는가?
  • 다양한 제약조건 검증 어노테이션(@NotNull, @Size 등)을 활용하였는가?

Lv.6 (구현)

  • 비밀번호가 성공적으로 암호화되어 저장되는가?
  • PasswordEncoder 클래스를 구현하고 활용했는가?

Lv.7 (구현)

  • CRUD 기능이 정상적으로 구동되는가?
  • 댓글 엔티티에 '댓글 내용, 작성일, 수정일, 작성 유저명' 필드가 포함되었는가?
  • 댓글과 일정 간의 연관관계가 설정되었는가?

LV.8  (구현)

  • Spring Data JPA의 Pageable과 Page 인터페이스를 활용하여 페이징이 구현하였는가?
  • 페이지 번호와 페이지 크기를 쿼리 파라미터로 받는 기능이 정상적으로 동작하는가?
  • 지정된 필드(할일 제목, 할일 내용, 댓글 개수, 일정 작성일, 수정일, 작성 유저명)가 조회되는가?
  • 디폴트 페이지 크기가 10으로 설정되어 있는가?
  • 일정의 수정일을 기준으로 내림차순 정렬이 잘 이루어지고 있는가?

 

 

👉 구현 핵심

  • 공통응답과 공통예외처리, 페이징
  • 세션을 불러오기 위한 파라미터에 커스텀 Annotation 사용(인가)
  • 필터(인터셉트) 화이트리스트 url를 커스텀 Annotation으로 구분
  • Optional로 null처리하기
  • swagger로 api 명세서 생성하기
  • Service 당 하나의 담당repository를 연결하여 유지보수와 코드 재사용성 늘리기

 

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

  • 유틸 클래스나 레코드에 대해 공부
  • 간단하게 page객체 사용하기
  • 연관관계 관련 공부
  • Soft delete 또는 보안에 신경쓰기
  • 여러 개의 에러코드를 응답할 수 있도록 하기(에러 메세지를 리스트로 관리)
  • builder()을 사용하여 DTO와 entity를 매핑하기