
하이버네이트의 시간은 거꾸로 간다
두줄요약
Spring Boot와 Hibernate 업그레이드 후 KST 환경의 LocalTime 변환 오류를 분석했습니다. 나노초를 제거하는 Converter로 임시 대응하고 통합 테스트 필요성을 확인했습니다.
문제 상황
- Spring Boot 3.x·JDK 17 업그레이드 후 자정 무렵 일부 배송 매니저 로그인 불가
- PostgreSQL TIME 컬럼 조회 중 음수 나노초로 인한
DateTimeException발생
원인 분석
- Hibernate 5.6.5에서 6.5.5로 변경되며
LocalTime저장 시 밀리초 반영 방식 변경 - KST 환경에서
Time객체의 epoch 기반 시간값이 음수가 되고, 조회 변환 과정의 나머지 연산으로 음수 밀리초 산출 - 0~8시, 나노초 소수점 3자리 조건에서 예외 재현
해결 방법
- 문제 컬럼의
LocalTime저장·조회 시 나노초를 초 단위로 절삭하는 JPA Converter 적용 - Hibernate 수정 버전 릴리즈 후 라이브러리 업그레이드 예정
적용해볼 점
- 프레임워크 메이저 업그레이드 전 인수·통합 테스트로 시간대·정밀도 변환 검증
- 디버깅 전 재현 조건과 가설을 명확히 정의하는 분석 흐름
