从Hibernate迁移到eclipse链接作为JPA提供者

时间:2013-04-18 15:22:24

标签: eclipselink

我们正计划从Hibernate 4.0迁移到eclipse链接,因为我们的JPA提供商可以让别人知道,如果有人走上这条路,会涉及哪种努力。

我很热衷于因为eclipse链接中的多租户优越性

2 个答案:

答案 0 :(得分:1)

迟到的回答,但我认为这个问题可能与其他人有关,而答案可能比看上去更复杂。

我认为只有100%的标准JPA使用率。有些差异可能至关重要。 E.g:

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

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

所以要把它包起来:

  • 介意JPA提供程序细节,其中JPA规范不是,具体而言(有许多未指定的行为留给提供者)。隐式缓存设置就是一个例子。您需要阅读JPA提供程序文档以使用提供程序的适当属性等。
  • 记住错误。 : - )

答案 1 :(得分:0)

简短回答。这取决于。

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

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