我想知道是否有人对这些框架的 JPA2.0 实现有经验?特别是与带有 EclipseLink 支持的 Spring3.x 一起使用。
您是否将这些框架和 JPA2.0 用于生产?有什么严重的问题吗?
我想知道是否有人对这些框架的 JPA2.0 实现有经验?特别是与带有 EclipseLink 支持的 Spring3.x 一起使用。
您是否将这些框架和 JPA2.0 用于生产?有什么严重的问题吗?
EclipseLink 更符合标准,因为它是 JPA 2 的参考实现,Hibernate 存在一些兼容性问题,但更成熟。
EclipseLink 的主要优点之一是您可以直接在 JPQL 查询中调用本机 SQL 函数。在 Hibernate 中,这是不可能直接实现的。
但是 Hibernate 拥有更大的社区、更好的文档以及更好的错误消息。
恕我直言,在可能的情况下使用标准 api 总是更好。您自己的示例完美地说明了这一点。当一个提供商未能按预期工作时,您可以在两个提供商上尝试相同的代码。切换到任何本机 API 会阻止您执行此操作。
如果使用 EclipseLink 作为您的 JPA 2.0 提供程序对您很有效,那么就使用它。如果您确实遇到了问题,请提交 EclipseLink 错误,并在此论坛或 EclipseLink 论坛和新闻组上获得帮助。
根据我的经验,使用 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,请注意您的应用程序服务器实现可能存在错误。
事务明智的是您的应用程序,特别是 Spring 必须为您处理事情。