
Github : springday-project
/todos와 /users API를 구현 및 각 요청과 응답의 JSON 형식, HTTP 상태 코드(201, 200, 400, 404)를 명확히 정의
Controller(기)는 클라이언트 요청을 받고, Service(생)는 비즈니스 로직을 담당하며, Repository(속)는 DB 접근을 전담하도록 역할을 분리
users와 todos 테이블을 각각 Entity 클래스로 매핑하고, 단방향 연관관계를 설정
클라이언트와 서버 간 데이터 교환 구조를 분리하고, ResponseEntity를 사용해 HTTP 응답 상태 코드와 메시지를 처리
DTO에 @NotBlank, @Email, @Valid 어노테이션을 적용해 서버에 전달되는 요청 데이터의 유효성을 검증하고, 잘못된 요청에 대해 적절한 오류를 반환
로그인 후 세션과 쿠키를 활용해 인증 상태를 관리
ERD를 통해 데이터베이스 테이블 구조를 시각화하고, users와 todos를 분리해 외래 키로 관계를 설정
반복되는 코드를 분리해 중복을 줄이고 리팩토링으로 유지보수 용이
클라이언트와 서버 간 통신 방식을 문서화하여 요청 URL, HTTP 메서드, 요청/응답 형식, 상태 코드를 명확히 정의하는 문서이다.
프로젝트 적용: /todos와 /users API의 요청/응답 JSON 포맷과 상태 코드를 명세서로 작성하고 Postman으로 테스트함.
Controller, Service, Repository ( 속생기 )로 역할을 분리하여 유지보수성과 확장성을 높이는 아키텍처이다.
프로젝트 적용: 컨트롤러는 요청을 받고, 서비스에서 비즈니스 로직을 처리하며, 레포지토리에서 데이터베이스 접근을 담당하도록 구현함.
Java 객체와 데이터베이스 테이블을 매핑하여 데이터를 관리하는 기술
프로젝트 적용: users와 todos 엔티티 클래스를 작성하고 JPA Repository를 통해 데이터 조작을 수행함.
DTO는 데이터 전송 객체이며, ResponseEntity는 HTTP 상태 코드와 데이터를 함께 제어하는 응답 객체
프로젝트 적용: DTO를 사용해 데이터 구조를 분리하고, ResponseEntity로 HTTP 상태 코드와 메시지를 포함한 응답을 처리함.
클라이언트로부터 받은 데이터의 유효성을 검사해 잘못된 요청을 방지하는 절차이다.
프로젝트 적용: DTO에 @NotBlank, @Email, @Valid 어노테이션을 적용해 필수 필드 및 이메일 형식을 검증함.
인증은 사용자의 신원을 확인하는 과정이며, 인가는 권한을 부여하는 과정이다.
프로젝트 적용: 로그인 후 세션과 쿠키를 활용해 인증 상태를 유지하고 Postman을 통해 인증 흐름을 검증함.
데이터베이스 테이블과 그 관계를 시각적으로 표현한 다이어그램이다.
프로젝트 적용: users와 todos 테이블을 분리하고 외래 키를 통해 관계를 설정함.
예)

데이터 중복과 이상 현상을 방지하기 위해 테이블을 체계적으로 분리하는 과정이다.
프로젝트 적용: 중복 데이터를 최소화하기 위해 users와 todos를 별도 테이블로 분리하고 관계를 설계함.
API 설계 시 주의사항RESTful URL과 HTTP 메서드를 명확하게 매핑하고, 일관된 데이터 포맷과 상태 코드를 유지하는 것이 중요함
프로젝트 적용:
/todos와/users경로를 REST 원칙에 맞게 설계하고, 상태 코드와 JSON 형식을 일관되게 유지
@SpringBootApplication — 메인 애플리케이션 클래스에 사용, 스프링 부트 자동설정, 컴포넌트 스캔 등 설정@EnableJpaAuditing — JPA 감사(auditing) 기능 활성화@Configuration — 스프링 설정 클래스 지정@Bean — 스프링 빈 등록 메서드에 사용@Service — 서비스 레이어 클래스 표시@Repository — 리포지토리 레이어 클래스 표시@RestController — REST API 컨트롤러임을 명시@RequestMapping — 기본 URL 매핑@GetMapping, @PostMapping, @PutMapping, @DeleteMapping — HTTP 메서드별 매핑@Transactional — 트랜잭션 범위 지정@Transactional(readOnly = true) — 읽기 전용 트랜잭션@Entity — 엔티티 클래스 지정@Table — 테이블 매핑@Id — 기본 키 필드 지정@GeneratedValue — 기본 키 생성 전략@Column — 컬럼 매핑 및 제약 조건 설정@EntityListeners — 엔티티 리스너 설정 (AuditingEntityListener.class)@CreatedDate — 생성 시각 자동 설정@LastModifiedDate — 수정 시각 자동 설정@Valid — 컨트롤러 메서드에서 DTO 검증 시 사용@NotBlank — 빈 문자열 불허, null 및 공백 체크@NotNull — null 체크@Email — 이메일 형식 검증@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