【问题标题】:EJB 3 or Hibernate 3EJB 3 或休眠 3
【发布时间】:2011-06-06 02:07:16
【问题描述】:

关于将由完整的 Java EE 应用程序服务器提供服务的 Java EE Web 应用程序,例如GlassFish,哪个是最好的 ORM 解决方案? EJB 3Hibernate 3 为什么?

【问题讨论】:

  • 还有许多其他具有明显优势的持久性解决方案;您似乎在您的问题中忽略了它们,因此任何关于“最佳”的答案都是任意的。什么是最好的可能取决于应用程序本身、编写它的开发人员以及正在使用的数据存储......而您还没有提供有关这些的信息

标签: hibernate jpa jakarta-ee ejb-3.0


【解决方案1】:

它们很相似; EJB 的 3.0 规范从 Hibernate 和 Spring 中吸取了很多。

我没有任何可以引用的确切指标,但我想说,如果您接受 Glassfish,那么使用它的所有技术对我来说是有意义的。为什么要引入另一个依赖项?看看 Glassfish 能否为您完成这项工作。

【讨论】:

    【解决方案2】:

    这两者完全不同。

    EJB3 是一个组件模型,它本身与 ORM 没有直接关系。它确实有助于轻松管理事务并让您从 JPA(Java EE 中的标准化 ORM 解决方案)轻松访问实体管理器。

    Hibernate (3) 确实是一种 ORM 解决方案,并且碰巧实现了 JPA。

    所以一个更合乎逻辑的问题是是使用标准化的 JPA 接口,还是直接使用 Hibernate 核心 API。然后一个后续问题可能是单独使用 JPA,还是与 EJB 3 结合使用。

    答案在一定程度上取决于您的确切需求,但通常将 JPA 与 EJB 3 结合使用是最简单的解决方案。单独使用 JPA 或 Hibernate 需要更冗长的代码,并且您必须手动管理事务,这可能会很痛苦。

    JPA 与 Hibernate 是另一场争论。 JPA 具有标准化接口的优势,因此可能会有更多的开发人员熟悉它。另一方面,本机 Hibernate API 始终是 JPA 的超集,因此提供了更多功能。

    通常,开发人员主要基于 JPA 编写代码,然后在有意义的地方使用一些特定于 Hibernate 的注释或 API 调用。在 99.99% 的情况下,支持这种混合 API 使用。

    还请注意,Glassfish 与 EclipseLink 捆绑在一起,而不是与 Hibernate 捆绑在一起。 EclipseLink 与 Hibernate 相当,但比它早了十多年。 Hibernate 借鉴了 EclipseLink(当时称为 TopLink)。

    另请参阅我对类似问题的回答:Database table access via JPA Vs. EJB in a Web-Application

    【讨论】:

      【解决方案3】:

      您问的是哪个 API 更好:EJB3 (JPA) 还是 Hibernate?我这么说是因为您在询问 EJB3 JPA(仅 API)和 Hibernate(实现和 API)。因此,要将苹果与苹果进行比较,您需要比较 API。您可以在标准 (JPA) 和更强大的专有 API (Hibernate) 之间进行选择。

      但是通过选择 JPA,还有另一个选择:对于它的实现。通过选择 Hibernate 来实现,您基本上可以放弃您的问题,因为 JPA 和 Hibernate 都可用。

      所以你的问题会改变:我应该选择哪个 JPA 实现(在 Hibernate、EclipseLink、OpenJPA、DataNucleus 等之间)?...

      【讨论】:

      • 请注意,EJB3 (JPA) 可能有点令人困惑。它表明 EJB3 是 JPA 的另一个名称,但事实并非如此。从技术上讲,它在 EJB 3.0 中已经是一个完全独立的规范,并且已经在当前的 EJB 3.1 版本中正式化。 JPA 在技术和组织上都不是一个完全不同的规范。您不能以任何方式互换这些术语。
      • 我的意思是遵循 Ehsun 问题中的术语。不过感谢您的澄清。
      猜你喜欢
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多