软件应用系统中的数据持久层主要为整个软件应用系统提供数据访问功能服务,从而可以使软件应用系统中的业务层组件的设计和开发人员能够专注于系统业务逻辑的开发,并且能够在不同应用项目中重用数据访问功能服务——这样将能够避免重复地进行对目标数据的增、删、改、查等功能的开发过程。
其次,将软件应用系统的数据访问服务组件从系统的业务处理逻辑中独立出,能够保持软件应用系统的多层架构体系设计的优势,继承和延续J2EE系统平台中特有的可伸缩性和可扩展性。
2、J2EE系统平台中的软件应用系统持久层的系统设计目标

(1)应用数据访问服务接口隔离系统中的业务层和持久层之间的关系
由于软件应用系统持久层中的的相关组件(如数据访问操作组件和数据连接组件)是异变的、不稳定的应用组件——因为软件应用系统的持久媒介是多样化的(数据库系统、XML文件、JSon文本文件、Excel数据表等形式)、数据源的连接方式也是多样的(直接连接、带缓存池的连接),如果数据源为数据库系统,则物理数据库系统的类型也是多样化的(可以为MySql开源数据库系统,也可能是Oracle、DB2、MS SQLServer等商业数据库系统)。
因此为了能够达到对具体的数据源(比如数据库系统或者XML文件等形式)访问操作进行屏蔽,应该只为上层的业务逻辑处理层提供有关的数据访问服务的接口。如下示图为体现此设计思想的原理性类关系示图。
由此,软件应用系统中的业务逻辑功能类相关程序只需要通过这些数据访问服务接口内所提供的功能方法完成对不同的目标数据源中的最终数据的读、写相关的功能操作,而不需要具体地了解它们的具体技术实现的细节。
(2)为什么要设计和应用数据访问服务接口
由于软件应用系统中的业务逻辑类和对应的数据源之间是相互分离的,并且业务对象也不需要了解应用系统中底层的数据源的具体实现,所以当软件应用系统中的数据源发生变化(比如数据库的类型或者对数据库的连接方式、或者数据持久媒介发生了变化(如原本是将数据存储到物理数据库系统,但随后又改变为将数据保存到XML格式的数据文件等)时,迁移仅仅涉及到需要修改软件应用系统持久层中有关的功能实现类。请见下图所示的体现这样的设计目标的原理形式的UML类图示。
从上面的示例图中可以了解到,软件应用系统中的业务处理功能类并没有直接依赖某种形式的数据源的数据访问功能操作,而是依赖数据访问服务接口。从而隔离了软件应用系统中的业务处理功能类对具体的数据源的依赖,也就提高了软件应用系统的灵活性和对数据源的适应性。
(3)明确J2EE系统平台中的软件应用系统持久层的系统设计目标
由此可知,软件应用系统中的系统持久层内的各个功能组件主要是为整个软件应用系统提供一个统一的、安全可靠和支持并发访问的数据持久访问服务,此外,它们还应该具有透明性——软件应用系统中的业务对象在不需要知道软件应用系统中的目标数据源的具体类型和特定实现的细节等方面的信息,便可以使用软件应用系统中所需要的数据源。
由此,这些设计要求也就是J2EE系统平台中的软件应用系统持久层的设计目标。
3、在经典的三层架构体系设计中为什么要将业务处理层和数据持久层相互分离
J2EE技术平台倡导软件应用系统中的数据持久层要为整个软件应用系统提供全部的数据访问功能服务,从而可以使软件应用系统业务处理层组件的开发者能够更加地专注于软件应用系统中与业务逻辑有关的功能开发和程序代码实现,而软件应用系统持久层开发人员也能够更加专注于编写数据访问功能实现代码,而且代码的质量更高!
比如,可以为每个数据源提供对应的创建、读取、更新和删除操作的功能类;这样的体系架构设计方案还能够达到在不同的软件应用系统项目中重用现有的数据访问服务的效果。如下示图为经典的软件应用系统中三层架构体系的分层示例图。
此外,这样的设计方案也将能够避免重复地进行对数据库表中的数据增、删、改、查等功能的开发实现过程,提高了软件应用系统开发的总体效率。
另外,将软件应用系统中的数据访问服务从业务逻辑处理相关程序中独立出,也还能够保持J2EE系统平台多层架构体系的优势,从而也使得软件应用系统在系统体系架构层次方面就具有良好的可伸缩性和可扩展性。
因此,在经典的三层架构体系的设计中,要将软件应用系统的业务处理层和数据持久层相互分离——这在J2EE MVC架构模式中的模型处理层中也是倡导将系统的业务处理程序和系统的数据访问程序相互分离。如下示图为体现该设计思想的《蓝梦网上商城》应用系统的体系架构设计结果的UML包图。
4、J2EE应用系统数据持久层主要应用DAO模式实现
(1)什么是DAO(Data Access Object,数据访问对象)设计模式
DAO设计模式是J2EE系统平台中所提供的标准设计模式之一,软件应用系统的设计和开发人员通过应用此设计模式能够达到把处于软件应用系统底层的数据访问操作的逻辑和位于上层的业务处理逻辑两者相互分离。
(2)为什么要提供DAO设计模式
此设计模式的主要作用是封装对软件应用系统中数据库的各种数据访问操作,每个DAO功能类程序实现对物理数据库系统中某个数据表中记录的"增(CREATE)、删(DELETE)、改(UPDATE)、查(READER)"(简称为CRUD)操作。
下图所示为在示例项目银行账户信息管理系统中应用DAO模式分别为用户信息和账户信息数据库表提供对应的DAO组件接口和它们各自的功能实现类的UML类图——在设计方面,继续遵守"面向接口编程功能实现"的开发原则。
当然,对DAO组件类的对象实例的创建方式一般是应用工厂方法设计模式。因为工厂方法设计模式能够将创建对象实例的功能程序与使用对象实例的功能程序相互分离。下图所示为银行账户信息管理系统中提供对账户DAO组件类的对象实例创建的工厂类AccountManageDAOFactory的实现代码片段的局部图示截图。