在 Jakarta Persistence 3.2 摘要 中,我有许多有趣的新内容要谈,以至于我忘记提到我们正在吸取的一个重要教训。
JPA 3.2 已经弃用了对 java.util.Date 、java.util.Calendar 、java.sql.Date 、java.sql.Time 和 java.sql.Timestamp 的支持,并在未来的规范版本中将被删除。 |
我不知道是什么原因,java.util.Date
没有被标记为 @Deprecated
,尽管它在 2014 年就应该被弃用——令人惊讶的是,它的 Javadoc 甚至没有 提及 到 java.time
的存在。然而,每个经验丰富的 Java 开发者都知道,java.util.Date
是并且一直是 糟糕的,而它在 java.sql
中的朋友甚至更糟。自从引入了 java.time
,就不应该再编写涉及 java.util.Date
或其子类的新代码。
JPA 从 2.2 版本开始就要求支持 LocalDate
、LocalTime
、LocalDateTime
、OffsetTime
和 OffsetDateTime
。3.2 版本增加了对 Instant
和 Year
的支持。这些是你应该在实体类中用来表示日期、时间和日期时间的类型。
因此,JPA 3.2 弃用了
-
@Temporal
和@MapKeyTemporal
注解, -
TemporalType
枚举,以及 -
Query.setParameter()
方法的所有重载,这些重载接受一个TemporalType
。
让我们看看 Java 本身是否会在这一点上跟随我们的步伐。
所以,如果你还在使用 java.util.Date
,我只有一个建议:停止。