hibernate - EJB 3 或 Hibernate 3

标签 hibernate jpa jakarta-ee ejb-3.0

关于将由完整的 Java EE 应用程序服务器(例如,Java EE 应用程序服务器)提供服务的 Java EE Web 应用程序GlassFish,哪个是最好的 ORM 解决方案? EJB 3Hibernate 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/

相关文章:

java - 方法 ejbCreate 的 EJB 3.0 版本是什么

mysql - 如何创建将数据存储到 mysql 数据库的 angularjs springboot 应用程序。使用 json

java - 不再与 c3p0 建立联系

java - 将 Spring Boot Web 应用程序连接到 postgresql 服务器

java - 使用onetomany连接更新实体,而子实体中没有id

java - 在 Quarkus 中重定向到 https

hibernate - 根据GORM查询中的字段过滤出对象

hibernate - 用户缺少权限或找不到 WITH JUnit 对象

java - JAXB 和 JPA 注释。是否有任何强有力的论据支持更喜欢字段访问而不是属性访问?

jakarta-ee - JSF2 搜索框