当前位置: 首页 > 知识库问答 >
问题:

JPA和java 8 date API-选择正确的实现(Instant、LocalDateTime、ZonedDateTime)

赵鸿畴
2023-03-14

在以下情况下,哪些可用的java 8时间API类最适合JPA实体映射:

  • 按信息类型创建的合同
  • 日期以UTC格式存储在数据库中
  • 业务逻辑以UTC进行所有计算
  • 日期显示在欧洲/维也纳时区的UI中

我看到的大多数示例都使用LocalDateTime,但其中一个没有任何时区的概念。既然我们的所有业务逻辑都应该在UTC中进行计算,并在UTC中检索/存储数据,那么Instant或ZonedDateTime不是更合适吗?

在决定使用哪种类型进行JPA实体映射时,应该考虑哪些实际影响(例如,无法为Instant添加一周)?

共有1个答案

孙阳舒
2023-03-14

Instant根据定义是UTC,因此如果您始终处理UTC,那么如果它具有您需要的所有操作就足够了。LocalDateTime是没有特定时区或区域偏移的时间戳,但如果您知道您只处理UTC,它可能对Instant不提供的操作很有用。

在UTC和其他时区之间来回转换时,可以携带明确的时区偏移的最精确类型是偏移日期时间(OffsetDateTime)。有一个方便的分区偏移。UTC常数,可用于将UTC的偏移量固定为0小时ZonedDateTime添加了时区的概念,该概念增加了对夏令时之类的支持,在处理UTC时,通常不需要夏令时,除非您希望在特定区域中显示本地时间。

 类似资料:
  • 选择正确的directory实现类——存储模块 在配置集群时,数据存储模块是众多模块中不需要过多关注的一个模块,但是却是非常重要的一个模块。它允许用户控制索引数据的存储方式:持久化存储(在硬盘上)或者临时存储(在内存中)。ElasticSearch中绝大部分的存储方式都会映射到合适的Apache Lucene Directory类(http://lucene.apache.org/core/4_5

  • 问题内容: 我知道: 即时是用于计算的“技术”时间戳表示(纳秒)。 LocalDateTime是日期/时钟表示形式,包括人类的时区。 最后,对于大多数应用程序用例,IMO都可以视为两种类型。例如:当前我正在运行一个批处理作业,我需要根据日期计算下一次运行,并且我正在努力寻找这两种类型之间的优缺点(除了Instant和时区部分的纳秒级精度优势)的LocalDateTime)。 您可以列举一些应用示例

  • 将以下内容添加到对象映射器: 任何帮助或指点我的错误将是感激的。

  • 问题内容: 我在对Postgres数据库使用github.com/bmizerany/pq。我需要选择“ todos”表中的所有行,并为每一行检查条件并相应地更新行。伪代码: UpdateTask()函数将发出一条SQL更新语句来更新该行。 在SELECT查询中发出SQL更新是否会锁定数据库?这是进行这种更新的正确方法吗? 问题答案: 首先, 至少 您应该这样做,以防止其他访问锁定行。您必须在事务

  • 我知道: 即时是一种用于计算的“技术性”时间戳表示(纳秒)。 LocalDateTime是包含人类时区的日期/时钟表示形式。 最终,IMO两者都可以作为大多数应用程序用例的类型。例如:当前,我正在运行一个批处理作业,需要根据日期计算下一次运行,我正在努力寻找这两种类型之间的优劣(除了Instant的纳秒精度优势和LocalDateTime的时区部分)。

  • 我是在windows环境和使用maven编译我的项目。虽然我刚刚创建了项目并添加了各个Libaries的依赖项。 当我添加它们时,maven开始抱怨缺少,所以我在中添加了以下内容: 当我运行maven安装时,我得到了一个丢失的jar的错误,如下所示: 问题是在“”中,并且在环境变量中正确设置,但是maven仍然在jre文件夹中查找,错误消息为“”。 有趣的是:当我在dependency中设置完整路