知识卡片

日期时间映射依类型与JPA版本分三档处理

普通读书笔记卡 · 1977.t

内容

Java日期时间类型繁多,映射相对复杂,可分三档:①java.sql.Date/java.sql.Timestamp——数据库原生支持,无须任何配置即可像其他基础类型一样使用,还可用columnDefinition设默认值(如CURRENT_DATE);②java.util.Date/java.util.Calendar——通过@Temporal注解映射为TemporalType.DATE/TIME/TIMESTAMP;③Java 8引入的LocalDate/LocalDateTime——取决于JPA版本:JPA 2.2已支持除Duration外的Java 8日期时间类型无须设置,低于2.2的版本发布在Java 8之前无法直接支持,需为其定义AttributeConverter(如实现convertToDatabaseColumn/convertToEntityAttribute)。发散:日期映射踩坑往往来自”类型选得随意+JPA版本不确定”的叠加,先锁定这两个变量再选映射方式最省事。

参考来源

- 位置:《解构领域驱动设计》第19章 19.2.2(源文件:_epub-src/OEBPS/032.xhtml) - 结论依据:原文按sql类型/util类型/Java8类型三档说明日期时间映射,并指出JPA版本影响。 - 原始内容:如果字段定义为Java 8新引入的LocalDate或LocalDateTime类型,情况稍显复杂,取决于JPA的版本。