JPA에서 Localdatetime을 사용하는 방법
Jsr310JpaConverters.class 사용
- Spring Data JPA 1.8 이상부터 사용 가능한 방법
@EnableJpaAuditing
@EntityScan(
basePackageClasses = { Jsr310JpaConverters.class },
basePackages = { "com.domain" }
)
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
장점
- 가장 간단하게 선언하고 사용 할 수 있다.
단점
- java.util.date 형식만을 변경해서 사용한다.
Attribute Converter 사용
- JPA 2.1부터 사용 가능
@Converter
public class TestConverter implements AttributeConverter<LocalDateTime, Date> {
@Override
public Date convertToDatabaseColumn(LocalDateTime localDateTime) {
return Date.from(localDateTime.atZone(systemDefault()).toInstant());
}
@Override
public LocalDateTime convertToEntityAttribute(Date date) {
return ofInstant(ofEpochMilli(date.getTime()), systemDefault());
}
}
@Entity
public class TestEntity {
@Convert(converter = TestConverter.class)
@Column(name = "create_date_time")
private LocalDateTime createDateTime;
}
- 위 처럼 사용할 컬럼에 converter를 정의해줘야한다.