J2EE探险者: 持久数据管理,第2部分 - 编程入门网
J2EE探险者: 持久数据管理,第2部分时间:2011-01-31 IBM Kyle Gabhart应用程序组件应实现针对企业服务的请求。要实现这些请求,应用程序组件常常必须更改底层数据存储的状态。这些更改绝对不能破坏持久数据存储的完整性。(在有关数据持久性的 第一篇文章中,我们将 持久数据存储定义为独立的数据资源库,即使在服务器崩溃或网络失败时,这个数据资源库也能保护其中的数据。)为了确保持久性,应用程序组件必须能处理并发性、连接管理、数据完整性以及同步。J2EE 的三种数据管理技术都能为开发人员处理这些功能,只不过每种技术都有自己的处理方法。 上月我们探讨了实体 bean 和 JDBC 的优缺点。本月,我们将查看 Java 数据对象如何与无状态会话 bean 组合,以及该解决方案如何与标准实体 bean 应用程序进行比较。由于 JDO 仍是一种相当新的技术(最新的 J2EE 持久性解决方案),所以我们将首先概述其工作原理。 JDO 概述 长久以来,Java 应用程序和持久数据管理之间的关系一直是不容易处理的。许多持久性机制以关系的方法而不是面向对象方法存储数据。即,数据存储在由包含字段的记录组成的表中,而不是存储为自包含对象(这些对象拥有内部数据和对其它对象的引用,而其它对象也拥有内部数据和引用)。将面向对象的表示转换成关系表示一直就很麻烦、易出错且会降低应用程序性能。直到最近,少数几个本质上是非关系型的持久性机制(例如 SQL BLOB 和 Java 序列化)使用起来也很麻烦。大多数持久性机制让开发人员负责处理持久性,或使用非 Java 语言(例如 SQL)与后端数据存储进行相互作用。 JDO 的优点在于它很简单。开发人员使用 Java 语言持久存储对象实例并从存储器检索实例。处理逻辑、同步和故障转移等均被透明地处理。开发人员无需使用 SQL 或 Java 语言提供的不便的序列化机制,只使用 POJO(无格式普通 Java 对象)即可,利用 JDO 接口将对象引用传递到存储器中并从存储器检索对象引用。 JDO 还采用了很多 JDBC 使用的高级体系结构。它使用一种可插入的体系结构,在这一体系结构中,开发人员将自己的代码编写成标准接口集(JDO API),而供应商提供这些接口的实现。这允许使用 JDO 接口的应用程序“插入”任何支持 JDO API 的数据存储。和 JDBC 一样,这可以使移植容易,并促进各供应商之间的竞争,从而产生更好的产品,因为供应商会力争提供更有效且功能更强大的实现。 会话 bean 和 JDO 会话 bean 是任何合并了 EJB 技术的 J2EE 体系结构的基干。对于无状态会话 bean 尤其如此。正如以前讨论的,无状态会话 bean 的稳定性和可预测性使其特别适合于管理持久的企业数据。 但是会话 bean 本身不能访问持久数据存储。它们必须与其它技术(如实体 bean、JDBC 或 JDO)相结合以创建一种持久数据管理机制。将会话 bean 与 JDO 结合类似于将它们与 JDBC 结合,但 JDO 是以更面向对象且更以 Java 为中心的观点处理该问题的。 功能强大的组合 通过向 EJB 容器请求资源管理器连接工厂,企业 bean 获得对外部资源的访问权。使用 JDBC 的 EJB 组件是这样做的,使用 JDO 的 EJB 组件也是这样做的。会话 bean 必须做的第一件事是通过调用 JNDI 查询,获得对 PersistenceManagerFactory 的引用。然后从工厂获得 PersistenceManager 实例。如果会话 bean 正在使用容器管理的事务,那么每个业务方法将使用工厂来获得新的 PersistenceManager 实例,之后在退出该方法之前关闭该实例。如果使用的是 bean 管理的事务,那么开发人员将确定事务的开始条件和结束条件。因此,可以在多个业务方法调用中使用同一 PersistenceManager 实例。同样,可以在一个业务方法中打开并管理多个事务。 PersistenceManager API 支 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |