[Spring] 심화 프로젝트 Store CRUD 구현

박화랑·2025년 4월 24일
1

📌 제목

Spring Boot 3 + JPA 기반 가게(Store) CRUD 구현기 (with JWT, S3 업로드)


🗂️ 목차

  1. 개요 및 사용 기술 스택
  2. 도메인 설계 요약 (Entity + Enum)
  3. 가게 생성(Create)
  4. 가게 조회(Read)
    • 단건 조회 (메뉴 포함)
    • 키워드 검색 (폐업 상태 제외)
  5. 가게 수정(Update)
    • 정보 수정
    • 이미지 변경 (S3 업로드)
  6. 가게 폐업 처리 (→ 상태 변경)
  7. 예외 처리 및 Validation
  8. 마무리 및 느낀 점

✍️ 예시 콘텐츠 (3. 가게 생성)

✅ 요구사항

  • 사장님(ROLE_owner)만 가게 생성 가능
  • 사장님은 최대 3개까지만 가게 운영 가능
  • 오픈/마감 시간, 최소 주문금액 등 설정 필수

Request DTO (StoreRequest.java)

public record StoreRequest(
    @Size(max = 30) String name,
    @Size(max = 20) String category,
    @Size(max = 255) String description,
    @Pattern(regexp = "\\d{2,3}-\\d{3,4}-\\d{4}") String phone,
    @Min(0) Integer minPrice,
    @Pattern(regexp = "^\\d{2}:\\d{2}$") String shopOpen,
    @Pattern(regexp = "^\\d{2}:\\d{2}$") String shopClose,
    String address,
    String storeImgUrl,
    String status // "OPEN", "CLOSED", "TERMINATED"
) { ... }

API 예시 (StoreController)

@Operation(summary = "가게 생성", security = {@SecurityRequirement(name = "bearer-key")})
@PostMapping
public ResponseEntity<StoreResponse> createStore(
        @Valid @RequestBody StoreRequest request,
        Authentication authentication) {
    User user = getUser(authentication);
    StoreResponse response = storeService.createStore(request, user);
    return ResponseEntity.ok(response);
}

예외 처리

  • NO_AUTH_FOR_STORE_CREATION → 사장님 권한 아님
  • TOO_MANY_STORES → 3개 초과 운영 시

💬 느낀 점 (마무리 부분)

Spring Boot 3로 넘어오면서 S3 SDK 버전도 바뀌면서 다시 기억을 되새길 수 있어 좋앗습니다.
Swagger를 활용한 문서화, Redis 블랙리스트 검사 등도 함께 다뤄볼 수 있어 유익했습니다.

profile
개발자 희망생

0개의 댓글