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.sqlDocker Compose의 계정과 비밀번호는 로컬 개발 전용입니다. 운영 환경에서는 환경변수 또는 별도의 비밀 관리 시스템을 사용해야 합니다.
MySQL이 실행 중이고 필요한 마이그레이션이 적용된 상태에서 실행합니다.
./gradlew test./gradlew bootRun경기 목록을 조회합니다.
curl http://localhost:8080/games특정 경기를 조회합니다.
curl http://localhost:8080/games/1DB 실행과 접속 방법은 db/README.md를 참고합니다.
- 물리 좌석 저장
- 회원 가입과 인증·인가
- 경기별 판매 좌석 생성 및 조회
- 좌석 선점과 동시성 제어
- 예매·결제·티켓 흐름