【问题标题】:Temporal libraries for Java [closed]Java的临时库[关闭]
【发布时间】:2010-10-25 21:13:32
【问题描述】:

我正在寻找 Java 的临时库,即允许存储同一概念的多个历史版本的库。 我正在寻找一个具有 API 的库,可以执行以下操作:

Instant i1 = Instant.valueOf("2010-01-01");
Instant i2 = Instant.valueOf("2010-01-02");
Attribute<String> a =  ....
a.setValue(i1, "String as of 2010-01-01");
a.setValue(i2, "String as of 2010-01-02");

您可以在nice articles by Martin Fowler 上找到有关时间问题的讨论

我找到的一个库是JTemporal,这对我来说似乎很不错,但它并不完整,并且缺乏对 Hibernate 持久性的支持。 我也希望支持时间集,即在确切时间点定义的集。 JTemporal 可以做到这一点,但持久化 TemporalSet 并不容易。

【问题讨论】:

  • 你不能用Map 做这个吗?
  • 这是 JTemporal 所做的,但时间支持更多,例如合并具有相同值的相邻周期等等。然而,Map 是针对单个时间属性的,但处理时间集比较困难

标签: java hibernate time temporal


【解决方案1】:

看看DaoFusion 框架,它作为一个与Hibernate 紧密集成的双时域框架。它应该正是您正在寻找的。

引自链接网站:

双时态模式提供了一种优雅而复杂的方式来处理大多数时态问题。 DAO Fusion 提供的双时态模式实现基于 Erwin Vervaet 和 Christophe Vanfleteren 创建的 bitemporal framework。您可以从他们的演示文稿Temporal Issues in a Rich Domain Model 中了解有关此框架的更多信息。

【讨论】:

  • 我忘记了,但我已经检查过了。那是很好的代码,但是,如果我没记错的话,它与 JTemporal 非常相似,并且使用了可以与 JTemporal 一起使用的相同“技巧”来实现 Hibernate 持久性:使用 Hibernate 知道热映射的 uderlying 集合。我不确定这是使用 Hibernate 的最佳方法,而且,此技巧不能用于存储 JTemporal TemporalSet,它是集合的集合
  • 这就是它的工作方式.. 为 Hibernate 提供一个可持久化的列表并为应用程序提供一个双时态对象。
【解决方案2】:

看看Deuce STM - Java 软件事务内存。

【讨论】:

  • 基于描述:“允许存储同一概念的多个历史版本”
  • +1 Bozho,这与 Fowler 所谓的“时间对象”关系不大
猜你喜欢
  • 2012-11-29
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 2010-10-26
  • 2011-03-25
相关资源
最近更新 更多