Java的时间库

9
我希望您能为我提供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");

你可以在Martin Fowler的好文章中找到有关时间问题的讨论。
我发现的一个库是JTemporal,它看起来很不错,但它并不完整,缺乏对Hibernate持久性的支持。我也希望支持时间集,即在某个确切时间点定义的集。JTemporal可以做到这一点,但持久化TemporalSet并不容易。

你不能用 Map 来做这个吗? - Bozho
这就是JTemporal的作用,但时间支持远不止于此,例如合并相邻周期具有相同值等等。 然而,该Map仅适用于单个时间属性,但处理时间集合更加困难。 - cdarwin
2个回答

4
请看DaoFusion框架,该框架作为一个双重时间框架与Hibernate紧密集成,正是你所需要的。引自链接网站:
引用: 双重时间模式提供了一种优雅而复杂的方式来处理大多数时间问题。DAO Fusion提供的双重时间模式实现建立在Erwin Vervaet和Christophe Vanfleteren创建的双重时间框架之上。您可以从他们的演示文稿“富域模型中的时间问题”中了解更多相关信息。

我忘记了,但我已经检查过了。那是好的代码,但如果我正确地回想起来,它与JTemporal非常相似,并且使用了与JTemporal相同的“技巧”,可以用于实现Hibernate持久性:使用Hibernate知道如何映射的底层集合。我不确定这是Hibernate的最佳方法,而且,此技巧无法用于存储JTemporal TemporalSet,这是一个集合的集合。 - cdarwin
这就是它的工作方式...将可持久化列表提供给Hibernate,并向应用程序提供双时间对象。 - stefanglase

2

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


基于描述:允许存储同一概念的多个历史版本。 - Eugene Kuleshov
+1 Bozho,这与Fowler所称的“时间对象”关系不大。 - Toby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接