J2EE探险者: 持久数据管理,第1部分

数据持久性是企业开发中最棘手的一个方面。一个企业数据持久性解决方案必须提供迅速的客户机事务,随着时间的过去确保数据完整性,以及在如系统崩溃和网络故障之类的日常灾祸发生时使数据继续存在。在 J2EE 探险者系列接下来的两个部分中,我们将着重讨论 J2EE 技术,这些技术有助于您为企业体系结构创建可靠的数据持久性解决方案。我们将通过简要地介绍企业应用程序中的数据持久性来开始该主题,然后继续更详细地讨论各种技术选项。在本部分中,我们将比较实体 bean 的一站式(single-stop)解决方案同更复杂的(但更健壮的)会话 bean 与 Java 数据库连接(Java Database Connectivity,JDBC)代码的组合。在下一部分中,我们将比较 Java 数据对象(Java Data Object,JDO)与实体 bean。

什么是数据持久性?

数据是任何计算机应用程序最重要的方面。计算机应用程序的核心是使某人或另一个计算机系统能够访问其数据。在企业环境中,数据不仅必须是可访问的(即,与用户界面连接并按一系列业务规则管理),而且还必须是持久的。 持久数据存储就是即使在服务器崩溃的情况下仍能存在的数据存储。

持久数据存在于应用程序的活动内存之外,通常在数据库或平面文件系统中。虽然持久数据被读入瞬时存储器以供使用或修改,但它始终被写到外部数据存储中以长期存储。美国国家标准与技术研究所(The United States National Institute of Standards and Technology)(请参阅 参考资料)定义了三种级别的持久数据:

部分持久数据是一种仅允许对最新版本更新的持久数据结构。

持久数据是一种保留其旧版本的数据结构;即,以前版本和当前版本都可能被查询。

完全持久数据是一种维护其数据的所有版本并允许对这些版本更新的持久数据结构。

大多数业务应用程序至少提供部分持久数据。这种类型的持久性在事务中期或者甚至在请求中期出现系统故障时容易遭破坏,这会导致数据不完整且常常遭毁坏。另一方面,在持久数据实现中,对系统中断或故障以“回滚(rollback)”回应,数据状态被回滚到上一个已知的良好配置。持久数据实现在企业体系结构和数据库管理系统(DBMS)中很常见。完全持久数据实现非常少见。完全持久数据实现的少数几个示例有:日志记录文件系统、VMS 文件系统(如 VAX 和 Mac OS X)以及并发版本控制系统(CVS)。

J2EE 中的持久性

信息时代非常强调分布式企业计算平台的使用。在这类平台上,必须不惜任何代价保护数据并使其永远持续存在,即使面临网络故障、内存泄漏和服务器崩溃时,也是如此。为了维护这种持久性,应用程序组件必须能够处理并发性、连接管理、数据完整性和同步。J2EE 的所有三种数据管理技术都为开发人员处理这些功能,但每种技术在处理时略有不同。

实体 bean,它提供健壮的数据持久性。bean 容器处理大部分的数据完整性、资源管理和并发性功能,从而使开发人员关注业务逻辑和数据处理,而不是这些低级细节。使用 bean 管理的持久性(Bean Managed Persistence,BMP)实体 bean 时,开发人员编写持久性代码而容器确定何时执行该代码。使用容器管理的持久性(Container Managed Persistence,CMP)实体 bean 时,容器生成持久性代码并管理持久性逻辑。

JDBC,当与会话 bean 结合时,它可提供简便的 EJB 开发和与平台无关的部署,而没有象 EJB 技术那样的资源使用和内存开销。象 BMP 实体 bean 一样,该解决方案要求开发人员编写持久性代码。与 BMP bean 不同的是,它还要求开发人员编写持久性逻辑。因而,开发人员负责确定何时将数据持久保留在数据存储中以及何时从数据存储装入数据。

Java 数据对象是最新的持久性机制。JDO 提供了面向对象的持久数据存储。开发人员使用 POJO(无格式普通 Java 对象,plain ordinary Java object)来装入和存储持久数据。

我们将在余下的文章中讨论实体 bean vs. 会话 bean 和 JDBC 组合的优缺点。

时间: 2024-11-03 22:07:49

J2EE探险者: 持久数据管理,第1部分的相关文章

J2EE探险者: 持久数据管理,第2部分

应用程序组件应实现针对企业服务的请求.要实现这些请求,应用程序组件常常必须更改底层数据存储的状态.这些更改绝对不能破坏持久数据存储的完整性.(在有关数据持久性的 第一篇文章中,我们将 持久数据存储定义为独立的数据资源库,即使在服务器崩溃或网络失败时,这个数据资源库也能保护其中的数据.)为了确保持久性,应用程序组件必须能处理并发性.连接管理.数据完整性以及同步.J2EE 的三种数据管理技术都能为开发人员处理这些功能,只不过每种技术都有自己的处理方法. 上月我们探讨了实体 bean 和 JDBC 的

J2EE 探险者:持久数据管理,第 1 部分

j2ee|数据 J2EE 平台为管理企业数据持久性提供了一组丰富的选项,但如何选择适合于您体系结构的选项呢?Kyle Gabhart 介绍了 J2EE 最佳的数据持久性技术 - 实体 bean.JDBC 和 JDO - 并在几个不同环境中比较它们.数据持久性是企业开发中最棘手的一个方面.一个企业数据持久性解决方案必须提供迅速的客户机事务,随着时间的过去确保数据完整性,以及在如系统崩溃和网络故障之类的日常灾祸发生时使数据继续存在.在 J2EE 探险者系列接下来的两个部分中,我们将着重讨论 J2EE

J2EE 探险者:持久数据管理,第 2 部分

j2ee|数据 上月的"探险者"专栏介绍了用于数据持久性的 J2EE 技术:实体 bean.JDBC 和 Java 数据对象(Java Data Object,JDO).本月,企业 Java 专家 Kyle Gabhart 不再专门讨论比较成熟的 JDBC 技术和 EJB 技术,而是主要介绍 JDO.尽管这种技术与其它技术相比还不成熟,但您会发现 JDO 有一些独一无二的优点. 应用程序组件应实现针对企业服务的请求.要实现这些请求,应用程序组件常常必须更改底层数据存储的状态.这些更改绝

J2EE探险者: 用于无状态网络的J2EE技术

在最近几年里,Java 行业的发展呈指数级增长.作为一名企业应用程序开发人员.架构设计师或者技术经理,您可以从许多供应商.最佳实践.规范和组件类型中为您的 Java 技术实现进行选择.J2EE 探险者系列的目的是帮助您从这些选择中找到一条途径,对于任何一种给定的情形,协助您挑选合适的技术. 在本文,也就是第 1 部分中,我们将探讨无状态 J2EE 组件,并评估出最合适的组件来用于您的企业体系结构.说到无状态.请求处理组件,可供选择的 J2EE 技术主要有两种:servlet 或 Enterpri

J2EE应用程序中的数据管理和数据持久性

本文分析了在 Java 平台上可用的两个数据管理策略:Java 对象序列化和 Java 数据库连接(JDBC).尽管本质上这两种数据管理策略并不存在孰优孰劣的问题,但在管理企业信息系统时,JDBC 轻而易举地得以胜出.在本文中,Java 开发人员 G.V.B. Subrahmanyam 和 Shankar Itchapurapu 对序列化和 JDBC都进行了介绍,并通过讨论和实例来向您展示了 JDBC 是您的最佳选择的原因. 当您正在建立企业信息系统时,需要确保以某种有效的方式存储.检索和显示企

J2EE中使用Spring AOP框架和EJB组件

j2ee 快速发展的开发人员社区.对各种后端技术(包括JMS.JTA.JDO.Hibernate.iBATIS等等)的支持,以及(更为重要的)非侵入性的轻量级IoC容器和内置的AOP运行时,这些因素使得Spring Framework对于J2EE应用程序开发十分具有吸引力.Spring托管的组件(POJO)可以与EJB共存,并允许使用AOP方法来处理企业应用程序中的横切方面--从监控和审计.缓存及应用程序级的安全性开始,直到处理特定于应用程序的业务需求. 本文将向您介绍Spring的AOP框架在

j2EE基础概念(总结)

j2ee|概念 Java基础方面: 1,作用域public,protected,private,以及不写时的区别 2,ArrayList和Vector的区别,HashMap和Hashtable的区别 3,char型变量能不能定义为一个中文?为什么? 4,多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么? 5,继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 6,内部类的实现方式? 7,垃圾回收机制,如何优化程序? 8,float型float f=3.4是否正确? Jsp

初学者如何开发出高质量的J2EE系统

j2ee|初学 J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向. 首先我们需要知道Java和J2EE是两个不同概念,Java不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以Java有时是指一种软件系统的流派,当然目前主要是.NET和Java两大主流体系. J2EE可以说指Java在数据库信息系统上实现,数据库信息系统从早期的dBase.到Delphi/VB等C/S结构,发展到B

扬扬的J2EE学习笔记(三)Components and Roles组件和角色

j2ee|笔记 每周学一些J2EE,作点笔记. 目标:能熟练使用Websphere做J2EE的开发工作. 加油!加油!!加油!!!  1. 架构    1) 组件:一个应用级的软件单元      J2SE拥有JavaBeans:J2EE拥有EJB(Enterprise JavaBeans)   2) 系统级实体容器      提供:运行支持.生命周期管理.安全.部署.线程   3) applet和客户应用程序      客户端组件执行自己的Java虚拟机(JVM)   4) WEB组件: