똑같은 코드인데 왜 안 돼? Spring JDBC 컨버터 미궁 탈출기
92
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

Spring JDBC 컨버터 문제와 해결책

이 게시물은 Spring Data JDBC에서 LocalDate 타입의 커스텀 컨버터가 예상대로 동작하지 않는 문제를 다룹니다.

문제 원인

  • Spring JDBC의 StatementCreatorUtils.setParameterValue() 메서드가 LocalDate와 LocalDateTime을 특별히 처리하며 커스텀 컨버터를 무시함
  • LocalDate는 JDBC 드라이버에 DATE 타입으로 전달되어 VARCHAR 컬럼에 저장 시 오류 발생
  • LocalDateTime은 TIMESTAMP 타입으로 전달되어 Oracle JDBC 드라이버의 자동 변환으로 정상 저장된 것처럼 보임

해결책

  • LocalDate를 감싸는 CustomLocalDate 래퍼 클래스를 만들어 커스텀 컨버터가 정상 적용되도록 우회
  • 이 방법은 타입 안정성을 유지하면서 DB 저장 형식을 완벽히 제어 가능
  • 양방향 컨버터 등록과 테스트 코드 작성으로 완성도 강화

실무 주의사항

  • DB 벤더별 JDBC 드라이버 동작 차이 고려
  • 충분한 테스트 필수

연관 게시글