목록 보기
하이버네이트의 시간은 거꾸로 간다
백엔드

하이버네이트의 시간은 거꾸로 간다

마켓컬리
마켓컬리
2024년 10월 16일

두줄요약

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 수정 버전 릴리즈 후 라이브러리 업그레이드 예정

적용해볼 점

  • 프레임워크 메이저 업그레이드 전 인수·통합 테스트로 시간대·정밀도 변환 검증
  • 디버깅 전 재현 조건과 가설을 명확히 정의하는 분석 흐름

다음 읽기

#Spring Boot 주제를 이어서 읽기

하이버네이트의 시간은 거꾸로 간다

스프링부트 업그레이드 후 하이버네이트의 시간 변환 로직 변화로 LocalTime 조회 오류가 발생했습니다. 임시로 Converter를 적용해 나노초를 제거하며 장애를 우회했습니다.

마켓컬리
마켓컬리
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...