이지은님의 블로그
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를 매핑하기
'프로젝트' 카테고리의 다른 글
Java Spring 기반 아웃소싱 팀 프로젝트 - Redis를 이용한 장바구니, JWT와 쿠키를 이용한 인증과 인가 (0) | 2025.03.07 |
---|---|
Java Spring 기반 뉴스피드 팀 프로젝트 - 3 Layered Architecture, JPA 등을 이용한 CRUD, 세션을 이용한 로그인 기능 (1) | 2025.02.20 |
Java Spring 기반 일정관리 앱 - 3 Layered Architecture, JDBC 등을 이용한 CRUD 기능 (0) | 2025.02.03 |
Java 기반 키오스크 - enum, 제네릭, 람다와 스트림 등을 이용한 키오스크 기능 (1) | 2025.01.17 |
Java 기반 키오스크 - level6 구현 코드 및 설명 (0) | 2025.01.17 |