真的,为什么要用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 支持流程的一部门利便地交付。
#p#分页标题#e#
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 得到的长处,尚有助于最大化您的开拓事情成就。