본문 바로가기
won2dev-log
HomeArchiveTagsCategoriesAboutProjects
HomeArchiveTagsCategoriesAboutProjects
won2dev-logwon2dev-logwon2dev-log

비전공 개발자의 로그 | won2dev-log

Navigation
  • Home
  • Archive
  • About
  • Projects
Categories
  • Docs
  • TIL
  • Automation
  • Git · GitHub
  • Project
Tags
  • TIL
  • Java
  • Spring
  • Backend
  • n8n
더보기
About

기록을 거름 삼아 공유는 성장을 만든다.

LicensePrivacy
© won2dev 2026. All rights reserved.
Home›Docs›Spring_day_Project - 일정 관리 앱 개발
Docs

Spring_day_Project - 일정 관리 앱 개발

won2dev·2025년 05월 25일
#Java#Backend#Application#Spring
Spring_day_Project - 일정 관리 앱 개발

📍주제

  • Spring Boot를 사용한 일정 관리 앱 개발
  • REST API 설계, 3계층 구조, JPA 등 주요 개념과 기술 정리

Github : springday-project

💬 배운 기술 / 지식

  • REST API 설계 및 Postman을 통한 테스트 과정
  • 3계층 아키텍처(Controller, Service, Repository) 이해 및 구현
  • JPA를 활용한 데이터베이스 연결 및 단방향 연관관계 설정
  • DTO와 ResponseEntity를 활용한 데이터 전달과 응답 처리
  • ERD 작성과 데이터베이스 정규화 개념 이해 및 적용
  • Jakarta Validation 어노테이션을 이용한 입력값 검증
  • 세션과 쿠키를 활용한 인증 처리
  • Filter활용

🧩 설명

  • API 설계 및 명세서 작성

    /todos와 /users API를 구현 및 각 요청과 응답의 JSON 형식, HTTP 상태 코드(201, 200, 400, 404)를 명확히 정의

  • 3계층 아키텍처 적용

    Controller(기)는 클라이언트 요청을 받고, Service(생)는 비즈니스 로직을 담당하며, Repository(속)는 DB 접근을 전담하도록 역할을 분리

  • JPA Entity 설계

    users와 todos 테이블을 각각 Entity 클래스로 매핑하고, 단방향 연관관계를 설정

  • DTO와 ResponseEntity 활용

    클라이언트와 서버 간 데이터 교환 구조를 분리하고, ResponseEntity를 사용해 HTTP 응답 상태 코드와 메시지를 처리

  • 입력값 검증

    DTO에 @NotBlank, @Email, @Valid 어노테이션을 적용해 서버에 전달되는 요청 데이터의 유효성을 검증하고, 잘못된 요청에 대해 적절한 오류를 반환

  • 인증 처리

    로그인 후 세션과 쿠키를 활용해 인증 상태를 관리

  • ERD 작성 및 데이터 정규화 (데이터 무결성)

    ERD를 통해 데이터베이스 테이블 구조를 시각화하고, users와 todos를 분리해 외래 키로 관계를 설정

  • Filter 활용 (반복 작업 효율화 도구)

    반복되는 코드를 분리해 중복을 줄이고 리팩토링으로 유지보수 용이

🚀 주요 개념 및 개발 가이드

📄 API 명세서란?

클라이언트와 서버 간 통신 방식을 문서화하여 요청 URL, HTTP 메서드, 요청/응답 형식, 상태 코드를 명확히 정의하는 문서이다.

프로젝트 적용: /todos와 /users API의 요청/응답 JSON 포맷과 상태 코드를 명세서로 작성하고 Postman으로 테스트함.

🏗️ 3계층 구조란?

Controller, Service, Repository ( 속생기 )로 역할을 분리하여 유지보수성과 확장성을 높이는 아키텍처이다.

프로젝트 적용: 컨트롤러는 요청을 받고, 서비스에서 비즈니스 로직을 처리하며, 레포지토리에서 데이터베이스 접근을 담당하도록 구현함.

🔄 JPA란? (ORM)

Java 객체와 데이터베이스 테이블을 매핑하여 데이터를 관리하는 기술

프로젝트 적용: users와 todos 엔티티 클래스를 작성하고 JPA Repository를 통해 데이터 조작을 수행함.

📦 DTO와 ResponseEntity란?

DTO는 데이터 전송 객체이며, ResponseEntity는 HTTP 상태 코드와 데이터를 함께 제어하는 응답 객체

프로젝트 적용: DTO를 사용해 데이터 구조를 분리하고, ResponseEntity로 HTTP 상태 코드와 메시지를 포함한 응답을 처리함.

✅ 입력값 검증이란?

클라이언트로부터 받은 데이터의 유효성을 검사해 잘못된 요청을 방지하는 절차이다.

프로젝트 적용: DTO에 @NotBlank, @Email, @Valid 어노테이션을 적용해 필수 필드 및 이메일 형식을 검증함.

🔐 인증과 인가란?

인증은 사용자의 신원을 확인하는 과정이며, 인가는 권한을 부여하는 과정이다.

프로젝트 적용: 로그인 후 세션과 쿠키를 활용해 인증 상태를 유지하고 Postman을 통해 인증 흐름을 검증함.

🗺️ ERD란?

데이터베이스 테이블과 그 관계를 시각적으로 표현한 다이어그램이다.

프로젝트 적용: users와 todos 테이블을 분리하고 외래 키를 통해 관계를 설정함.

예)

이미지

🧹 정규화란?

데이터 중복과 이상 현상을 방지하기 위해 테이블을 체계적으로 분리하는 과정이다.

프로젝트 적용: 중복 데이터를 최소화하기 위해 users와 todos를 별도 테이블로 분리하고 관계를 설계함.

⚠️ API 설계 시 주의사항

RESTful URL과 HTTP 메서드를 명확하게 매핑하고, 일관된 데이터 포맷과 상태 코드를 유지하는 것이 중요함

프로젝트 적용: /todos와 /users 경로를 REST 원칙에 맞게 설계하고, 상태 코드와 JSON 형식을 일관되게 유지

💡 느낀 점 및 개선할 점

  • API 명세서 작성과 Postman 테스트로 REST API 설계 이해도가 크게 향상되었다.
  • 3계층 구조가 코드 유지보수와 테스트에 유리함을 체감했다.
  • 아직 ERD 작성과 FK 설정은 어렵지만 전체 데이터 흐름 파악에 도움이 되고 유용하다는점 을 알았다.
  • ResponseEntity를 이용한 응답 표준화가 실무에 꼭 필요한 기술임을 깨달았다.
  • Jakarta Validation 적용으로 입력 검증이 깔끔해졌다.
  • 인증 흐름을 Postman으로 실습했지만, 좀 더 깊은 공부가 필요하다.
  • 생성자 주입과 Filter 활용에 대해 좀 더 학습하고 적용해보려 한다.
  • Validation과 ORM 설정을 공부하며 무결성의 중요성을 깨달았다. 아직 어렵지만 더 깊이 학습할 필요가 있음을 알았다.

🧾 사용된 어노테이션

Spring 관련 주요 어노테이션
  • @SpringBootApplication — 메인 애플리케이션 클래스에 사용, 스프링 부트 자동설정, 컴포넌트 스캔 등 설정
  • @EnableJpaAuditing — JPA 감사(auditing) 기능 활성화
  • @Configuration — 스프링 설정 클래스 지정
  • @Bean — 스프링 빈 등록 메서드에 사용
  • @Service — 서비스 레이어 클래스 표시
  • @Repository — 리포지토리 레이어 클래스 표시
  • @RestController — REST API 컨트롤러임을 명시
  • @RequestMapping — 기본 URL 매핑
  • @GetMapping, @PostMapping, @PutMapping, @DeleteMapping — HTTP 메서드별 매핑
  • @Transactional — 트랜잭션 범위 지정
  • @Transactional(readOnly = true) — 읽기 전용 트랜잭션
JPA 관련 어노테이션
  • @Entity — 엔티티 클래스 지정
  • @Table — 테이블 매핑
  • @Id — 기본 키 필드 지정
  • @GeneratedValue — 기본 키 생성 전략
  • @Column — 컬럼 매핑 및 제약 조건 설정
  • @EntityListeners — 엔티티 리스너 설정 (AuditingEntityListener.class)
JPA 감사용 어노테이션 (Spring Data JPA)
  • @CreatedDate — 생성 시각 자동 설정
  • @LastModifiedDate — 수정 시각 자동 설정
Jakarta Validation 어노테이션
  • @Valid — 컨트롤러 메서드에서 DTO 검증 시 사용
  • @NotBlank — 빈 문자열 불허, null 및 공백 체크
  • @NotNull — null 체크
  • @Email — 이메일 형식 검증
Lombok 어노테이션
  • @Getter — Getter 메서드 자동 생성
  • @Setter — Setter 메서드 자동 생성
  • @NoArgsConstructor — 기본 생성자 자동 생성
  • @AllArgsConstructor — 모든 필드를 인자로 받는 생성자 자동 생성
  • @Builder — 빌더 패턴 구현
서블릿 필터 관련
  • @Override — 자바 오버라이드 메서드 표기

🏷️ 필수 키워드

Spring Boot

REST API

DTO

ResponseEntity

JPA

ERD

3계층 구조

단방향 연관관계

@Valid

@Email

@NotBlank

Postman

Session

Cookie

StatusCode

Filter

@RequiredArgsConstructor

공유하기
이전 글H2? 컵라면처럼 간편한 DB였다다음 글 국밥 하나 시켰을 뿐인데… API 개념이 이해되기 시작했다

목차

  • 📍주제
  • 💬 배운 기술 / 지식
  • 🧩 설명
  • 🚀 주요 개념 및 개발 가이드
  • 📄 API 명세서란?
  • 🏗️ 3계층 구조란?
  • 🔄 JPA란? (ORM)
  • 📦 DTO와 ResponseEntity란?
  • ✅ 입력값 검증이란?
  • 🔐 인증과 인가란?
  • 🗺️ ERD란?
  • 🧹 정규화란?
  • 💡 느낀 점 및 개선할 점
  • 🧾 사용된 어노테이션
  • 🏷️ 필수 키워드

카테고리

Docs

태그

#Java#Backend#Application#Spring

최근 글

Git 요약 (1) - Rebase, Stash, Squash MergeTIL - MSA 핵심 요소 정리TIL - (4) Spring 어노테이션 정리: Mockito를 활용한 단위 테스트TIL - (3) Spring 어노테이션 정리: Lombok Getter, Setter와 생성자TIL - (2) Spring MVC와 WebFlux의 차이: 블로킹과 논블로킹