java - 我应该使用哪个 EJB 3 持久提供程序?

标签 java orm jpa jakarta-ee

我在一个相当大的 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/

相关文章:

java - JApplet 使用的线程分割

java - 无法从播放服务获取位置更新

java - Hibernate "IN"子句为 ALL 而不是 ANY

java - 选择给定时间段内的唯一登录

Netbeans 10(带有 Maven)中的 JavaFX 11 没有 Sources/Javadocs

java - 在 Eclipse/Intellij 中 Java 执行 "incremental compilation"的频率是多少?

php - 使用 Doctrine 2 获取最后一个插入 id?

database - 如何从 Sequelize 中的实例中排除关联属于多?

java - Hibernate 中空引用的查询处理

java - 在wildfly中分别部署JPA和REST包