JPA与Hibernate的优缺点

Java Persistence API数据库

从 EJB 技术能够开始应用时起,对其在实际应用中的可用性就一直存在怀疑。在我看来,产生这种现象最重要的两个缘由是复杂性和资源密集性。结果,随后出现了比 EJB 更简单、具备更小资源空间的框架(好比 Spring 和 Hibernate),而且更快流行开来。为了说明这一点,咱们注意到 EJB 3.0 规范的方向相对之前出现了一个主要的转变。做为 JSR 220 的一部分,该规范提供了相似 Plain Old Java Object (POJO) 支持、Dependency Injection(依赖注入)和注释等功能。如今引入了一组全新的 API:Java Persistence API (JPA),以容许开发者管理 Java EE(甚至 SE)应用程序中的关系数据。另外,Sun 声称 Java Persistence API 表现了一些 Hibernate、TopLink(两者都会在稍后讨论)、JDO 以及 EJB 框架中最好的想法。服务器

当前,GlassFish 项目提供了实施 JPA 的一个参考,JPA 在 GlassFish 应用程序服务器中做为 TopLink Essential 部分。您能够在 GlassFish 社区页 找到该 JPA 参考实施。不要混淆 TopLink Essentials 和 TopLink,前者如今是由 Oracle Corporation 拥有的关系映射工具。稍后我将在本文中讨论 TopLink 框架。架构

让咱们来讨论一些您应该考虑应用 JPA 做为持久化框架的应用场景。框架

什么时候考虑将JPA做为持久化框架工具

您选择从流行的框架(好比 Hibernate、TopLink 和 EJB)中选择应用具备“好用”的功能且基于标准的框架。性能

您须要轻量级的持久化框架,且不须要 EJB 的容器提供的服务。学习

您须要能够在标准或 Enterprise Java 应用程序中使用的持久化框架。优化

什么时候考虑JPA的备选方案设计

您使用的 Java 的版本决定了实际是否能够应用 JPA。JPA 是 EJB 3.0 规范的一部分,而该规范是 Java EE 5 版本的一部分。若是您未更新到 Java EE 5,则没法使用 JPA。对象

您的应用程序须要 JPA 没法提供的服务,好比那些由 EJB 容器提供的服务,在那些状况下您更依赖 EJB。

在结束对此框架的讨论前,让咱们列出一些使用 JPA 做为持久化框架的优点和缺点。

JPA有什么优点?

JPA 是基于标准的。愈来愈多的提供商期待在不久的未来提供 JPA 实施。

它提供了 Hibernate 和 TopLink 中最好的功能。

它能够和 Java SE 和 Java EE 应用程序一块儿使用,须要使用 EJB 容器,也能够不要。

JPA有什么缺点?

因为很是新,JPA 规范可能还须要进太重要发展才会变得很稳定。

JPA 是一个规范而不是一个产品。您须要提供商提供一个实施,才能得到这些基于标准的 API 的优点。

Hibernate

Hibernate 是一个对象持久化框架,简化了 Java 应用程序和底层关系数据库之间的对象关系映射。方法是提供 POJO 的透明持久化,做为“中介”层来提供自动持久化,并从 Java 应用程序加载对象到数据库表。借助 Hibernate,保存对象状态到数据库和从数据库加载对象状态与调用 Java 对象中的方法同样容易。您无需从您的应用程序代码中管理底层的数据操做;Hibernate 框架会为您完成全部的中间步骤。

让咱们讨论一些您将会考虑应用 Hibernate 做为持久化框架的应用场景,以及那些您将寻求备选方案的应用场景。

什么时候使用Hibernate做为持久化框架

您正在寻求一个简单的持久化框架,该框架容易学习和使用。在您可以实际开始持久化您的 Java 对象到目标数据库以前,您只须要了解几个映射配置文件。

您正在寻求一个很是普通和灵活的持久化框架。Hibernate 的用法很是灵活:不管是否有应用程序服务器均可以使用,不管是否有关系数据库系统也可使用。

您不想支付获取和维护费用。Hibernate 是开源并且免费的。

Hibernate 框架很是值得应用,由于它很是简单和灵活,同时也很强大。可是,在如下一些应用场景中您可能想要考虑应用其余框架。

什么时候考虑Hibernate的备选框架

您还不想要其余框架。尽管简单,Hibernate 框架仍然有本身的学习曲线、维护/更新周期,等等。

您须要容器提供的服务,好比那些由 EJB 提供的服务,在那些状况下您的选择局限于 EJB。

若是您正在使用或计划使用 Hibernate 做为您的持久化框架,这里是一些它的优点和缺点。

Hibernate有什么优点?

Hibernate 易于学习和使用。正如我在上面提到的,在您可使用它以前,您只须要了解几个简单、自我描述的配置文件。

它 很是灵活。您能够在任何须要持久化服务的应用程序架构中使用 Hibernate。您能够经过 Servlet 和/或 Enterprise Java Bean 在 Standard Java 应用程序、Enterprise Java 应用程序中使用它。它也能够和 Spring 框架很好地集成。

它能够很好地向上扩展,由于它被设计为从底层一直到集群环境中工做。经过相似 Lazy Initialization 的技术以及经过 CGLIB 运行时间字节代码生成库优化 Java 反射,最新版的 Hibernate 的性能也获得了增强。

Hibernate有什么缺点?

Hibernate 是另外一个拥有本身的应用和维护周期的框架。

尽管有积极的社区支持,可是有时候缺少专一于此产品的提供商也使得宣传应用此框架显得没有说服力。

相关文章
相关标签/搜索