본문 바로가기

dev/Spring

Java Date와 Spring boot JPA(Hibrnate)

Java8 이전의 Date는 불변 객체가 아니라는 점, 상수 필드 남용 및 일관성 없는 상수값 등 많은 문제점을 가지고 있다.

(참조 : 머루의 개발블로그, Java의 Date)

 

Java8 이후에는 LocalDateTime을 사용해 기존의 문제를 대부분 해결 가능하다.

Java8을 사용할 수 없는 상황이라면,  joda-time을 사용할 수 있으며 안드로이드의 경우 date4j를 사용할 수 있다.

 

한편, Spring JPA에서 LocalDateTime을 사용할 때는 Spring boot의 버전을 고려해야 한다.

Java 8의 날짜와 시간 클래스는 Hibernate 5.3(JPA 2.2) 부터 별도의 설정 없이도 정상적으로 사용 가능하다.

Spring boot는 2.1 버전부터 Hibernate 5.3을 지원하므로, 만약 현재 사용하는 스프링 부트 버전이 2.1 이상이라면 별도의 설정 없이 Java 8의 날짜와 시간 클래스를 사용할 수 있다.

한편, 현재 spring boot 1.5를 사용하고 있다면(또는 hibernate 5.1 이하 버전을 사용중이라면) 별도의 설정을 해 주어야 한다. 설정 방법은 hibernate-java8 의존성을 추가해 주면 된다.

 

spring boot 1.5와 hibernate 5.1의 최소 java 버전이 7이기 때문에 명시적으로 의존성을 추가해주는 것이다.

(참조링크 및 설정 방법 상세 : Java 8 Date(Time) 와 JPA 그리고 스프링 부트 )