WEB开发网
开发学院WEB开发Jsp 真的,为什么要用Hibernate? 阅读

真的,为什么要用Hibernate?

 2010-10-26 12:59:12 来源:Web开发网   
核心提示:您已经拥有需要的JPA实现最近,我回答了几个关于在 IBM® WebSphere® Application Server 环境内使用 Hibernate 的论坛帖子、电子邮件、即时消息和电话咨询,真的,为什么要用Hibernate?,由于人们对这个主题兴趣浓厚,因此我想在这里介绍有关信息,结束语本文主要

您已经拥有需要的JPA实现

最近,我回答了几个关于在 IBM® WebSphere® Application Server 环境内使用 Hibernate 的论坛帖子、电子邮件、即时消息和电话咨询。由于人们对这个主题兴趣浓厚,因此我想在这里介绍有关信息,希望本文会对那些还没有来得及亲自问我的人有所帮助。

具体来说,我指的是在 WebSphere Application Server 环境中使用 Hibernate JPA。这也是原始 Hibernate 编程模型,我将其称为 Hibernate “经典”。由于这个经典 Hibernate 编程模型并不是 Java™ EE 5 套件的一部分,因此它与这个话题关系不大。这篇文章 有几个重复版本,该文章描述了如何在 WebSphere Application Server 环境中利用 Hibernate “经典” 编程模型。这种使用基本上类似于其他任何实用程序框架。您可以将其打包为一个(共享)库并从您的应用程序使用它,但它不是整个应用程序服务器运行时的一个必要部分。

本文主要关注如何在 WebSphere Application Server 环境中使用 Hibernate JPA — 或者说,既然 WebSphere Application Server 已经提供了一个行业领先的 JPA 实现,为什么 要使用 Hibernate JPA?

JPA 是什么?

JPA 就是 Java Persistence API,它是标准持久性框架,作为 EJB™ 3.0 规范系列中的一部分在 JAVA EE 5 中首次引入。到 Java EE 6,JPA 2.0 发展为拥有自己的 JSR。JPA 的核心是一个 Object/Relational (O/R) Mapping 设施,但它已经演变为包含几个 其他特性。由于 JPA 是 Java EE 套件的一个必要组件,它的功能与 EJB 容器和 Web 容器、事务管理、数据库连接管理和安全管理完全集成。许多技术都注入到 JPA 的创建过程中,比如 EJB CMP、JDO 和 Hibernate。因此,如此多的现有 Hibernate 用户都想在 WebSphere Application Server 环境中继续使用这个框架就不足为奇了。

Hibernate 的继续使用是一个有争议的有效目标,就像从一个编程模型(经典)到另一个(JPA)需要花费时间和资源一样。如果没有足够的理由在支持这个投资,那么继续使用原来有效的工具就行了,这种行为甚至还可能受到鼓励。

但如果您正在计划迁移到 JPA 标准并享受其中的好处,那么有几个强有力的原因促使您从 Hibernate “经典” 迁移到 WebSphere JPA 解决方案。

WebSphere JPA 解决方案和优势

WebSphere Application Server JPA 解决方案构建于 Apache OpenJPA 项目之上:

WebSphere Application Server V6.1 Feature Pack for EJB 3.0 首先包含 JPA 并基于 OpenJPA 1.0.x 服务流。

WebSphere Application Server V7 提供了完整的 Java EE 5 堆栈,包括一个更新的、基于 OpenJPA 1.2.x 流的 JPA。

最近,WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API 2.0 被引入,它基于 OpenJPA 2.0.x 流。

所有这些软件都利用相同的二进制文件,它们可以从 OpenJPA 下载站点 获取,因此,有一点可以保证:任何针对 Apache OpenJPA 编写的应用程序无需修改就可以在 WebSphere Application Server 环境中运行。

当然,WebSphere Application Server 还通过一些已定义的插入点来提供 OpenJPA 基本软件之外的其他特性,从而提供一个非常完整、非常丰富的 JPA 解决方案。

易于使用

WebSphere JPA 解决方案完全集成到 WebSphere Application Server 产品中。无论您的环境使用这个特性包解决方案中的一个还是使用 WebSphere Application Server v7,JPA 解决方案都可以开箱即用,不需要额外配置或打包。

由于这个集成的 JPA 解决方案(见图 1),WebSphere Application Server 能够向基础 OpenJPA 二进制文件提供一些功能扩展。一些已经被增强的领域包括 IBM DB2® 扩展(具体是 pureQuery 集成和锁定优化)、性能、配置和管理支持、安全支持、已扩展的跟踪和日志支持、以及用于消息日志的国家语言支持。

图 1. WebSphere JPA 架构

WebSphere Application Server JPA 允许在 WebSphere Application Server 运行时安装和使用替代 JPA 提供者。例如,可以使用 Hibernate JPA,但 Hibernate JPA 提供者不能获取任何 WebSphere Application Server 扩展。除此之外,Hibernate JPA 解决方案的打包也不简单。因此,需要注意的是,尽管 WebSphere Application Server 的确支持使用替代 JPA 提供者,但这种方法有一些缺点。

更低的支持成本

完整的 WebSphere JPA 解决方案拥有完整的 IBM 产品服务和支持,这意味着发现的任何问题都将通过常规支持渠道得以解决。JPA 开发团队的大多数成员都是 Apache OpenJPA 项目的积极贡献者。所有问题都将记录在案并通过 Apache OpenJPA 项目解决。然后,这些更新将作为常规 WebSphere 支持流程的一部分方便地交付。

WebSphere JPA 解决方案的另一个主要优势是不同发行版之间的兼容性支持。重要的是从一个 WebSphere Application Server 发行版迁移到另一个 — 包括完整的版本和特性包 — 尽可能简单,IBM 也尽一切努力使 JPA 迁移也同样轻松。如果一个新 JPA 或 Java EE 规范迫使对该产品进行不兼容的更改,通常会提供实现上述行为的文档和 “支持选项”。由于 OpenJPA 灵活的打包架构,WebSphere Application Server 能够替代任何不规范的 OpenJPA 行为,使不同发布版之间的 WebSphere Application Server 体验一致。

如果您使用一个替代 JPA 提供者,比如 Hibernate JPA,则 WebSphere Application Server 支持在该替代 JPA 提供者的已定义插入点停止。在替代 JPA 提供者中发现的任何问题(比如对象映射、数据库交互、性能问题等)都需要与该提供者一起解决。这也许涉及使用他们的论坛获取支持,或者建立一个外部服务合同。显然,这不太方便。

更好的性能

请记住,性能比较可能不够客观。由一个 JPA 提供者研发和推广的任何性能基准测试 — 即使是发布到 Web 上的所谓 “独立” JPA 基准测试 — 都可能偏向某个 JPA 提供者。如果再加入许可因素,那么这些类型的特定 JPA 基准测试可能会更散乱。

由于这些和其他原因,IBM 通常依赖行业标准基准测试。例如,SpecJEnterprise 考虑应用程序服务器的几个方面,但主要关注持久性框架。据估计,75-80% 的 SpecJEnterprise 基准测试依赖持久化层(即 JPA 提供者)。SpecJEnterprise 1Q2010 比较清晰地显示 WebSphere 在这个领域的领导地位,类似的结果也出现在 2Q2010 和更高版本。

IBM 不断通过简单操作(创建、检索、更新和删除)、运行行业基准测试以及其他方法比较 WebSphere Application Server JPA 解决方案和其他解决方案。IBM 度量了许多变体,以确保 WebSphere JPA 解决方案继续保持性能领先地位,并最大化 WebSphere Application Server 的体验和总体优势。

结束语

本文主要阐明坚持使用 WebSphere JPA 解决方案而不是迁移到 Hibernate JPA(或其他任何 JPA 提供者)在业务、开发和其他各方面都是明智选择。简单易用、更低的成本、更好的性能、以及无缝的体验不仅能最大化您从 WebSphere Application Server 获得的好处,还有助于最大化您的开发工作成果。

Hibernate查询

http://tech.cncms.com/develop/delphi/44539.html

Tags:Hibernate

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接