在 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,我只有一个建议:停止。