1

我们正计划从 Hibernate 4.0 迁移到 eclipse 链接,因为我们的 JPA 提供商可以让我知道如果有人沿着这条路走下去需要付出什么样的努力。

我很热衷,因为多租户在 eclipse 链接中更胜一筹

4

2 回答 2

1

迟到的答案,但我相信这个问题可能与其他人有关,答案可能比看起来更复杂。

我只考虑 100% 的标准 JPA 使用。有一些可能至关重要的差异。例如:

  • 默认情况下,Hibernate 不缓存。默认情况下,EclipseLink 会大量缓存。您必须查看有关如何迁移缓存的文档。
  • 默认情况下,即使在 Java SE 环境中,Hibernate 也可以找到(扫描)类,EclipseLink 不这样做。两者都按照规定在 EE 环境中进行。
  • 两个提供程序都存在错误,即使使用 100% JPA,您也可能经常遇到一些错误,具体取决于映射的复杂性、您是否以及如何使用 JPQL 等。我们实践中的示例:
    • Hibernate 不会为跨连接的删除生成正确的 SQL,例如delete from Dog d where d.breed.name = 'collie':(链接
    • 或者更奇特的 EclipseLink 删除@OneToMany引用非@Id属性(链接)的实体
    • 作为另一个示例,虽然现在已修复,但 EclipseLink 中的惰性列表上的 Java 8 流也存在问题,因为它们被滥用Vector(扩展了一个而不维护超类的受保护字段的不变量)。

考虑到两个项目中都有多少错误打开(这本身可能是预期的),当您尝试来回迁移时,您可能会遇到错误交火。

所以总结一下:

  • 注意 JPA 提供者的细节,其中 JPA 规范不是特定的(有许多未指定的行为留给提供者)。隐式缓存设置就是一个例子。您需要阅读 JPA 提供者文档以使用提供者的正确属性等。
  • 注意错误。:-)
于 2016-02-19T07:50:49.567 回答
0

简短的回答。这取决于。

长答案。如果您使用 100% 标准 JPA,这可能是微不足道的,或者如果您直接使用 Hibernate API,您可能不得不重写所有内容。

最佳答案。如果您使用 JPA,这将是不平凡的,但不是一个令人发指的时间承诺。

于 2013-04-19T16:18:05.927 回答