用于JPA的Hibernate或EclipseLink?
我想知道是否有人有任何这些框架的JPA2.0实现经验? 特别是与Spring3.x一起提供EclipseLink支持。
您是否使用这些框架和JPA2.0中的任何一个进行生产? 任何严重的问题?
恕我直言最好尽可能使用标准API。 你自己的例子很完美地表明了 当一个提供程序无法按预期工作时,您可以在两个提供程序上尝试相同的代码。 切换到任何本机API都会阻止您执行此操作。
如果使用EclipseLink作为您的JPA 2.0提供程序适合您,那么使用它。 如果碰巧遇到问题,请提交EclipseLink错误,并在此论坛或EclipseLink论坛和新闻组中获取帮助。
EclipseLink更符合标准,因为它是JPA 2的参考实现,Hibernate有一些合规性问题,但更成熟。
EclipseLink的主要优点之一是您可以直接在JPQL查询中调用本机SQL函数。 在Hibernate中,这不可能直接实现。
但是Hibernate有一个更大的社区,更好的文档和更好的错误消息。
根据我的经验,使用Java Perf Profiling。 使用Eclipselink构建的应用程序在数据插入和检索方面似乎比Hibernate要好得多。 然而,Hibernate被更广泛地使用,并提供了更大的支持论坛。
在制作中,我会因此而采用Hibernate。
只需挑选并坚持下去。 标准只是最终的准则,每个实施者都可以相应地实施或不实施标准。
例如
-
EclipseLink存在使用基本内容的问题,例如JPA
@Converter
尽管最近通过IBM http://www-01.ibm.com/support/docview.wss?uid=swg1PI73277进行了修复 -
Hibernate的JPQL实现不了解更具体的布尔值我不得不改变我的JPQL来说
from Participant p where not p.cancelled
至
from Participant p where p.cancelled = false
另一件事是你在Spring中构建东西,你可能会采用不正确但常见的方法将类加载器更改为PARENT_LAST
顺序,这样就可以使用类而不是应用程序服务器。
如果您打算采用正确的方法并使用应用程序服务器附带的JPA,请稍微警惕您的Application Server实现可能有问题。
交易明智的应用程序,特别是Spring必须为您处理事情。