我在一个相当大的 J2EE 项目上使用 EJB 3,默认情况下,Netbeans 将实体 bean 的持久提供程序设置为 TopLink。可以选择将提供者更改为以下之一,甚至可以添加新的持久性库:
- hibernate
- 科多
- OpenJPA
您更喜欢使用哪个持久性提供程序?使用其他提供商有什么好处?
虽然 TopLink 看起来不错,但我找不到很多关于如何控制缓存等的好文档。任何帮助将不胜感激。
最佳答案
我只会考虑使用两个 JPA 提供程序:
如果您想坚持使用标准 JPA,我会使用 EclipseLink。尽管 Toplink Essentials 是 JPA 1.0 的引用实现,但 EclipseLink 基本上继承了 TopLink Essentials 代码并将成为 JPA 2.0 的引用实现(并在 Glassfish V3 发布时与它捆绑在一起;预计 JavaOne 将于 2009 年 5 月发布)。 TopLink Essentials 是 Oracle 商业 TopLink 产品的一个有点残缺的版本,但 EclipseLink 基本上具有 TopLink 的所有功能。
另一种选择显然是 Hibernate。它被广泛使用和成熟,但从我所看到的来看并不是没有问题。例如,上次我查看了 Hibernate 对于具有多个一对多热切关系的实体存在问题。我不知道 Hibernate 是否具有与 EclipseLink 的批量查询提示等效的功能,但它是处理此类问题的一个非常有用的功能。
Hibernate当然也支持标准的JPA。 Hibernate 的最大优势在于,如果您对它的工作原理有疑问,谷歌搜索很可能会为您找到答案。
老实说,除了上述两个提供商之外,我不会考虑任何其他提供商。
关于java - 我应该使用哪个 EJB 3 持久提供程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/98045/