36

我想知道是否有人对这些框架的 JPA2.0 实现有经验?特别是与带有 EclipseLink 支持的 Spring3.x 一起使用。

您是否将这些框架和 JPA2.0 用于生产?有什么严重的问题吗?

4

4 回答 4

34

EclipseLink 更符合标准,因为它是 JPA 2 的参考实现,Hibernate 存在一些兼容性问题,但更成熟。

EclipseLink 的主要优点之一是您可以直接在 JPQL 查询中调用本机 SQL 函数。在 Hibernate 中,这是不可能直接实现的。

但是 Hibernate 拥有更大的社区、更好的文档以及更好的错误消息。

于 2010-07-13T07:06:30.513 回答
26

恕我直言,在可能的情况下使用标准 api 总是更好。您自己的示例完美地说明了这一点。当一个提供商未能按预期工作时,您可以在两个提供商上尝试相同的代码。切换到任何本机 API 会阻止您执行此操作。

如果使用 EclipseLink 作为您的 JPA 2.0 提供程序对您很有效,那么就使用它。如果您确实遇到了问题,请提交 EclipseLink 错误,并在此论坛或 EclipseLink 论坛和新闻组上获得帮助。

于 2010-07-13T17:53:05.607 回答
9

根据我的经验,使用 Java Perf Profiling。我使用 Eclipselink 构建的应用程序在数据插入和检索方面的性能似乎都比使用 Hibernate 好得多。然而,Hibernate 使用更广泛,并提供了更大的支持论坛。

在生产中,出于这个原因,我将简单地使用 Hibernate。

于 2016-12-06T12:24:07.193 回答
1

只需选择并坚持一个。标准只是最终的指导方针,每个实施者都可以相应地实施或不实施标准。

例如

  • 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 必须为您处理事情。

于 2017-05-09T19:21:07.473 回答