`
wxb880114
  • 浏览: 680929 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JPA与Hibernate的优缺点

阅读更多
JPA与Hibernate的优缺点
2009-06-19 18:36 yingfang05 javaeye 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!

JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。本文将对比JPA与Hibernate的优缺点。

AD:

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 是另一个拥有自己的应用和维护周期的框架。

尽管有积极的社区支持,但是有时候缺乏专注于此产品的提供商也使得宣传应用此框架显得没有说服力。
分享到:
评论

相关推荐

    Struts,Spring,Hibernate优缺点

    Struts、Spring 和 Hibernate 是Java Web开发中三大主流的开源框架,它们各自有着独特的功能和优缺点。在构建企业级应用程序时,理解这些框架的核心特性以及它们如何相互补充至关重要。 Struts 是一个基于MVC...

    JPA ibtas xmlJPA ibtas xmlJPA ibtas xmlJPA ibtas xmlJPA ibtas xml

    9. **JPA与Hibernate的关系**:Hibernate是JPA的一个实现,它在JPA规范的基础上提供了更多的功能,如更丰富的查询语法(HQL)和缓存机制。 10. **优缺点**:JPA的优势在于其标准化,易于在不同持久化提供商间迁移,且...

    ssh框架优缺点

    3. **与JPA标准的竞争:**尽管Hibernate是目前最流行的ORM框架之一,但在某些场景下,Java Persistence API (JPA)的标准实现可能会更受欢迎。 4. **对非关系型数据的支持有限:**尽管Hibernate支持多种数据库类型,...

    integer with spring struts hibernate mybatis jpa

    标题 "integer with spring struts hibernate mybatis jpa" 提示了这个压缩包可能包含一个集成使用Spring、...而对于有经验的开发者,这样的项目可以帮助他们更好地理解和比较不同的框架在实际项目中的应用和优缺点。

    jpa开发实例和文档

    **JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。...同时,理解JPA的优缺点,如性能、灵活性、学习曲线等,也有助于在不同场景下做出合适的技术选择。

    三大框架的优缺点

    然而,Struts1存在一些缺点,比如Action类过于庞大,难以管理和调试,且对依赖注入(DI)支持不够完善。Struts2在Struts1的基础上进行了改进,引入了拦截器(Interceptor)机制,增强了灵活性,但同时也增加了复杂性...

    最经典的hibernate教程_从入门到精通(全四篇)

    3. JPA与Hibernate的结合:对比JPA(Java Persistence API)和Hibernate,理解两者的关系和各自优缺点。 4. 分布式环境下Hibernate的使用:在集群环境中配置和使用Hibernate,包括分布式缓存的考虑。 5. 实战项目...

    hibernate使用参考文档

    Hibernate 使用参考文档 Hibernate 是一个流行的 Java持久层框架,它提供了一种对象关系映射(Object-Relational Mapping,ORM)机制,用于将 Java 对象与关系数据库之间建立映射关系。...* Hibernate 的优缺点分析

    Mybatis和JPA区别表格详细比较.docx

    - JPA 提供了自动建表的能力,通过配置 `spring.jpa.properties.hibernate.hbm2ddl.auto` 属性,如设置为 `update`,可以在启动应用时根据实体类自动更新数据库结构。 2. **动态 SQL 支持**: - Mybatis 允许在 ...

    JPA百度百科

    2. **实体管理器(EntityManager)**:它是与JPA交互的主要接口,负责创建、更新、删除实体以及查询数据库。`EntityManager`提供了事务控制和生命周期管理的功能。 3. **实体管理器工厂(EntityManagerFactory)**...

    JPA所有例子

    **JPA的优缺点**: 优点: 1. 提供了一种统一的API,减少了与特定数据库的耦合。 2. 支持面向对象的编程模型,易于理解和维护。 3. 提供了丰富的查询语言JPQL,简化了数据库查询。 缺点: 1. 性能可能不如直接使用...

    hibernate3.1.2中文版学习手册.rar

    8. Criteria与HQL的比较:对比两种查询方式的优缺点,指导何时选择哪种查询方式。 9. Native SQL查询:介绍如何在Hibernate中执行原生SQL,以及如何映射结果到Java对象。 10. 自动更新与级联操作:理解Hibernate...

    JPA学习笔记-EJB-03JPA主键生成策略总结

    每种策略都有其适用场景和优缺点。开发者应根据具体的应用需求和数据库特性选择最适合的生成方式。例如,在性能要求较高的场景下可以选择`IDENTITY`或`SEQUENCE`策略;而在需要跨数据库一致性的环境中则更适合使用`...

    jpa

    **JPA的优缺点:** 优点: 1. 提供了面向对象的编程模型,简化了数据库操作。 2. 支持多种持久化供应商,如Hibernate、EclipseLink等,具有一定的灵活性。 3. 内置了丰富的查询机制,减少了手动编写SQL的需求。 ...

    hibernate3 chm 格式 中文

    8. **Criteria与HQL的比较**:对比两者在查询性能和灵活性上的优缺点。 9. **关联映射**:涵盖一对一、一对多、多对一、多对多等各种关联关系的映射实现。 10. **缓存机制**:解析第二级缓存和查询缓存的工作原理...

    对hibernate的封装 HibernateTemplate

    **四、优缺点** 虽然HibernateTemplate简化了许多操作,但也有其局限性。例如,它不支持JPA的Criteria查询和Querydsl等现代查询方式。随着Spring Data JPA的发展,越来越多的开发者转向使用Repository接口,它提供了...

Global site tag (gtag.js) - Google Analytics