2008-09-18 25 views
3

我在相当大的J2EE项目上使用EJB 3,默认情况下,Netbeans将实体Bean的持久提供者设置为TopLink。还有就是要提供者更改为以下,甚至添加新的持久性库的一个选项:我应该使用哪个EJB 3 persisent提供程序?

  • 休眠
  • KODO
  • OpenJPA的

哪个持久性提供你喜欢使用?使用另一个提供商有什么好处?

尽管TopLink看起来不错,但我无法找到关于如何控制缓存等的很好的文档。任何帮助将不胜感激。

回答

7

即使世界只有两个JPA提供商我会考虑使用:

如果你要坚持标准JPA我将EclipseLink。尽管Toplink Essentials是JPA 1.0的参考实现,但EclipseLink基本上继承了TopLink Essentials代码,并且将成为JPA 2.0的参考实现(并且在Glassfish V3发布时捆绑;预计2009年5月在JavaOne上发布)。 TopLink Essentials是Oracle的商业TopLink产品的一个有点瘫痪的版本,但EclipseLink基本上具有TopLink的所有功能。

另一种选择显然是Hibernate。它广泛使用和成熟,但不是我所见过的无问题。例如,最后我看到Hibernate对具有多个一对多渴望关系的实体有问题。我不知道Hibernate是否与EclipseLink的批量查询提示等价,但它是处理这类问题的一个非常有用的功能。

Hibernate当然也支持标准的JPA。 Hibernate的最大优点是,如果你对它的工作方式有疑问,Google搜索很可能会找到答案。

我真的不会考虑除了上述两个供应商以外的任何东西。

+2

你为什么不考虑OpenJPA的。每个实施都有其优点和缺点...... – b3bop 2012-01-18 00:17:29

2

我会强烈建议Hibernate进行,原因如下:

  • 最广泛使用和尊重在Java世界开源持久层;巨大的活跃社区以及大量关键任务应用程序的使用。
  • 如果您希望与您的其他应用程序(如Spring等)建立不同的路线,那么您不会将自己与J2EE或某个特定的供应商联系在一起,因为Hibernate仍然会表现出色。
2

我发现Hibernate是相当有据可查的,并且得到各种缓存技术的支持。在非JPA的情况下,我也比其他人使用了它多一点,所以也许我有点偏向于它。

我用TopLink Essentials尝试过的几个小玩具项目也做得非常好,但我从未进入缓存或任何需要提供程序特定文档的东西。总的来说,我认为对此的社区支持较少,这是我最终使用Hibernate的一部分原因。

1

我使用Hibernate。它非常成熟,效果非常好。我个人没有使用其他任何人,但我知道Hibernate是其中功能最全面的JPA提供者之一。同样因为有这么多人在使用它,几乎所有我遇到的问题,我都可以通过一些Google搜索很快找到解决方案。

0

我最近在一个使用Kodo JPA框架构建的大型企业应用程序上工作。由Kodo生成的SQL一般不具有大量数据的可伸缩性。在我看来,它产生了太多的外连接查询。考虑到在尝试缩放kodo时我们必须改变多少映射,我不推荐将它用于大型企业应用程序。即使是我们与之交谈的Oracle代表也都试图将客户从科多身上赶回TopLink。 Oracle可能会在未来淘汰科多。

相关问题