Composite PK에서 시작된 Spring Boot 4 / Spring Batch 6 업그레이드 기록
백엔드
Composite PK에서 시작된 Spring Boot 4 / Spring Batch 6 업그레이드 기록
두줄요약
Spring Data JDBC의 Composite ID 적용을 계기로 Spring Boot 4와 Spring Batch 6 업그레이드를 진행했습니다. 복합키 매핑, 배치 메타데이터 변경, Kotlin·Jackson·Gradle 호환성까지 함께 정리했습니다.
핵심 내용
- Spring Data JDBC의 Composite ID 정식 지원을 계기로 시작된 Spring Boot 3.5.0 → 4.0.1 업그레이드 기록
- 업그레이드 범위가 Spring Framework 7, Spring Batch 6, Jackson 3, Kotlin 2.3, Gradle, ojdbc11, Kotest 6까지 확장된 과정
- Composite PK를 억지 우회 없이 엔티티로 표현하고, 운영 반영 전 배치 메타데이터와 실행 호환성을 점검한 경험
구조와 흐름
- Composite PK를 단일 @Id로 우회하면 save/update/deleteById에서 다른 row를 덮어쓸 수 있는 위험
- Composite ID를 @Id와 Persistable로 표현해 신규 저장 의도를 명시하고 update 오인을 줄이는 방식
- Kotlin data class copy()와 @Transient 상태, markNew() 호출 타이밍에 따른 신규 판단 흐름
주의할 점
- Spring Batch 6 전환 시 메타데이터 저장 방식, Job 실행 API, JobParameters, listener·item 패키지 이동 확인 필요
- BATCH_JOB_SEQ와 BATCH_JOB_INSTANCE_SEQ처럼 배치 메타 스키마 변경에 따른 운영 호환성 대응 필요
- markNew() 누락 시 insert 대신 update 경로로 해석될 수 있어 저장 경로 규약 고정 필요
