在Hibernate中持久化Joda DateTime而不是Java Date

Tau*_*ren 15 java timezone hibernate date jodatime

我的实体目前包含java Date属性.我开始经常使用Joda Time进行日期操作和计算.这意味着我不断地将我的日期转换为Joda DateTime对象并再次返回.

所以我想知道,有什么理由我不应该只更改我的实体来存储Joda DateTime对象而不是Java Date对象?

请注意,这些实体是通过Hibernate持久化的.我找到了jodatime-hibernate项目,但我也在Joda邮件列表上读到它与较新版本的hibernate不兼容.它似乎维护得不是很好.

所以我想知道是否最好继续在Date和DateTime之间进行转换,或者是否明智地开始持久化DateTime对象.我担心的是依赖于维护不善的图书馆.

编辑:请注意,我的目标之一是更好地存储时区信息.仅存储日期似乎将日期保存在本地时区.由于我的应用程序可以在全球范围内使用,我也需要知道时区.Joda Time Hibernate似乎也在用户指南中解决了这个问题.

小智 5

Joda Time Hibernate可以与最近的Hibernate版本一起使用 - 您可能需要稍微调整一下所有的依赖图(例如设置排除项).我还可以建议您查看我已发布到Sourceforge上的用户类型.这为Joda Time提供了用户类型,旨在避免您提到的客户端偏移问题.我欢迎您对该项目的任何反馈.https://sourceforge.net/projects/usertype/files/

问候克里斯.


Jac*_*eow 3

我认为使用 Joda DateTime 作为 bean 属性类型可能是一个好主意。然后,您可以让 Hibernate 进行转换并将属性保存为本机数据库日期格式。

我个人使用过 jodatime-hibernate 并且没有遇到任何问题(我们使用的是 Hibernate 3.2.5GA)。

如果您对 jodatime-hibernate 有疑虑,您始终可以使用Hibernate 的自定义类型映射机制(我确信这就是 jodatime-hibernate 所做的)。