关于将由完整的 Java EE 应用程序服务器(例如,Java EE 应用程序服务器)提供服务的 Java EE Web 应用程序GlassFish,哪个是最好的 ORM 解决方案? EJB 3 或 Hibernate 3 为什么?
最佳答案
这两个完全不同。
EJB3
是一个组件模型,其本身与 ORM 没有直接关系。它确实有助于轻松管理事务,并让您可以轻松地从 JPA 访问实体管理器,JPA 是 Java EE 中的标准化 ORM 解决方案。
Hibernate
(3) 确实是一种 ORM 解决方案,并且恰好实现了 JPA。
所以一个更合乎逻辑的问题是是使用标准化的JPA接口(interface),还是直接使用Hibernate核心API。那么后续问题可能是是否单独使用 JPA,还是与 EJB 3 结合使用。
答案在一定程度上取决于您的具体需求,但通常将 JPA 与 EJB 3 结合使用是最简单的解决方案。独立使用 JPA 或 Hibernate 需要更详细的代码,并且您必须手动管理事务,这可能会很痛苦。
JPA 与 Hibernate 是另一场争论。 JPA 的优点是拥有标准化的接口(interface),因此更多的开发人员可能会熟悉它。另一方面, native Hibernate API 始终是 JPA API 的超集,因此提供了更多功能。
通常,开发人员主要基于 JPA 编写代码,然后在有意义的情况下使用一些 Hibernate 特定注释或 API 调用。在 99.99% 的情况下,支持这种混合 API 使用。
另请注意,Glassfish 与 EclipseLink 捆绑在一起,而不是与 Hibernate 捆绑在一起。 EclipseLink 与 Hibernate 相当,但比 Hibernate 早十多年。 Hibernate 从 EclipseLink(当时称为 TopLink)借鉴了很多东西。
另请参阅我对类似问题的回答:Database table access via JPA Vs. EJB in a Web-Application
关于hibernate - EJB 3 或 Hibernate 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4639535/