Skip to content

Repository files navigation

Baseball Ticketing

KBO 야구 티켓팅의 핵심 흐름을 단계적으로 구현하는 Spring Boot 프로젝트입니다. 현재는 팀·구장·경기 일정과 좌석 구역의 도메인 및 영속성 구조를 다룹니다.

현재 기능

  • KBO 10개 팀과 9개 구장 초기화
  • 2026년 7월 LG-두산 잠실 3연전 초기화
  • 복합 조건을 이용한 경기 일정 중복 방지
  • 경기 목록 및 단건 조회 REST API
  • 도메인 모델과 JPA Entity를 분리한 MySQL 영속성
  • 물리 좌석 구역(SeatSection) 모델과 DB 제약조건

기술 스택

  • Java 21
  • Spring Boot 3.5
  • Spring MVC
  • Spring Data JPA / Hibernate
  • MySQL 8.4
  • Docker Compose
  • Gradle
  • JUnit 5 / AssertJ / MockMvc

구조

HTTP request
  -> Spring MVC Controller
  -> Application Service
  -> Domain Repository interface
  -> JPA Repository Adapter
  -> Spring Data JPA / Hibernate
  -> MySQL

도메인 계층은 JPA와 Spring에 직접 의존하지 않습니다. 인프라 계층의 Adapter가 도메인 객체와 JPA Entity를 변환하며 DB 접근을 담당합니다.

로컬 실행 준비

Docker Desktop을 실행한 뒤 프로젝트 디렉터리에서 MySQL을 시작합니다.

docker compose up -d
docker compose ps

기존 Docker volume을 사용한다면 좌석 구역 마이그레이션을 한 번 적용합니다.

docker compose exec -T mysql mysql \
  --default-character-set=utf8mb4 \
  -ubaseball -pbaseball_local baseball_ticketing \
  < db/migration/004_create_seat_sections.sql

Docker Compose의 계정과 비밀번호는 로컬 개발 전용입니다. 운영 환경에서는 환경변수 또는 별도의 비밀 관리 시스템을 사용해야 합니다.

테스트

MySQL이 실행 중이고 필요한 마이그레이션이 적용된 상태에서 실행합니다.

./gradlew test

애플리케이션 실행

./gradlew bootRun

경기 목록을 조회합니다.

curl http://localhost:8080/games

특정 경기를 조회합니다.

curl http://localhost:8080/games/1

DB 실행과 접속 방법은 db/README.md를 참고합니다.

다음 단계

  1. 물리 좌석 저장
  2. 회원 가입과 인증·인가
  3. 경기별 판매 좌석 생성 및 조회
  4. 좌석 선점과 동시성 제어
  5. 예매·결제·티켓 흐름

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages