2013-04-18 25 views

回答

0

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

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

  • Hibernate默认情况下不缓存。 EclipseLink默认情况下会大量缓存。你必须检查双方如何迁移缓存的文档。
  • 默认情况下,即使在Java SE环境中,Hibernate也可以找到(扫描)类,EclipseLink不会这样做。都在指定的EE环境中进行。
  • 有两个供应商的错误,甚至是100%的JPA你可能会碰到一些经常取决于你映射的复杂性,是否以及如何使用JPQL等从我们的实践例子:
    • Hibernate不产生正确的SQL进行删除跨加入这样的:delete from Dog d where d.breed.name = 'collie'与Java(link
    • 还是颇为奇特的EclipseLink的删除实体与@OneToMany引用非@Id财产(link
    • 再举一个例子,虽然现在固定的,也有问题在懒惰的李流8因为他们误用了Vector(扩展了一个而没有维护超类的受保护字段的不变量)。

考虑有多少错误是在两个项目开(这本身可能预期)当您尝试迁移前后可能进入错误的交叉火力。

所以把它包起来:

  • 心灵JPA提供商细节在JPA规范是不是很好,具体的(有左提供商许多不确定的行为)。隐式缓存设置就是一个例子。您需要阅读JPA提供商文档才能使用提供商的适当属性等。
  • 注意错误。 :-)
0

简短的回答。这取决于。

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

最佳答案。这将是不平凡的,但如果您使用JPA,则不会是无耻的时间承诺。

相关问题