优缺点:Hibernate 与 EJB 3

Posted

技术标签:

【中文标题】优缺点:Hibernate 与 EJB 3【英文标题】:Pros & Cons: Hibernate vs. EJB 3 【发布时间】:2010-03-16 17:06:18 【问题描述】:

Hibernate 和 EJB3 相对于彼此的优缺点是什么?

我找到了this 的帖子,但它并没有真正解决我的问题。如果我对这两种技术都没有任何特别的联系,那么是什么让我选择其中一种?或者在某些情况下我想同时使用两者?

谢谢, 扎克

编辑:回应 cmets:我对 EJB3 了解不多。我只是想了解这对我的公司是否可行。如果 EJB3 无法与 Hibernate 相比,请解释原因。

【问题讨论】:

哇!真的很棘手的问题。我猜发布/缺陷修复周期更快的团队会赢得这一轮。只要 hibernate 遵守 JPA 规范,这个问题就会潜伏,但如果他们决定分支并合并一些非常好的特性,那么...... Hibernate 和 EJB3 不进行比较。可以将 EJB3 和 spring 进行比较。 @Bozho 我想他的意思是 Hibernate 与 JPA(经常与 EJB3 混淆) 你应该澄清这个问题。如果您的问题是关于 Hibernate 和 JPA,请重写它,因为 EJB3 不仅仅是 JPA,而且您无法将 EJB3 作为一个整体与 Hibernate 进行比较。 【参考方案1】:

JPA 提供 Hibernate 功能的子集,但 EJB3 提供 Hibernate 未解决的其他服务(例如 Web 服务、EJB、计时器服务)

与 Hibernate 相比,JPA 提供以下优势:

标准化 API 厂商独立(可以在Hibernate、TopLink、OpenEJB等之间切换)

Hibernate 提供以下好处:

广泛使用 事实上的标准 来自 Spring、Grails 等的直接支持。 可能更好的工具支持 比 JPA 更多的功能

您可以做的是使用 JPA 在 EJB 中编写应用程序,然后在必要时使用 Hibernate 特定的功能。或者,如果您不关心标准化和供应商锁定,则只需使用普通的 Hibernate 进行持久化。实际上,您不太可能在 Hibernate 和其他提供商之间切换,但确实会发生。

【讨论】:

Nitpick:Spring 也支持 JPA

以上是关于优缺点:Hibernate 与 EJB 3的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate的优缺点

Web Services vs EJB vs RMI,优缺点?

MyBatis和Hibernate的优缺点对比

在 JavaEE 6 WAR 与 EAR 中打包 EJB

一起了解Hibernate与Mybatis的区别优缺点对比

Spring+IOC(DI)+AOP概念及优缺点