背景
ADF Faces组件是ORACLE公司扩展的一套完整的JSF组件,使JSF开发的UI工作变得更加方便、牢固和统一。但ADF Faces系列包括了100多个组件,如何使用这些组件?ADF Faces除了组件还带了什么新的特征?ORACLE公司为了阐明这些问题,制作了一个称为SRDEMO的项目,并以此项目为蓝本撰写了”Oracle Application Development Framework Developer Guide”文档,作为Oracle ADF框架的使用手册。
原始的SRDEMO项目使用EJB 3.0和声明式数据绑定(基于JSR 227)技术,而这两个技术在目前的开发中使用并不广泛,且声明式数据绑定是ORACLE公司的实现的私有产品。为了更方便大家的学习,对原始的SRDEMO项目进行了改造。
大家在继续学习以前,请先阅读一下” Oracle Application Development Framework Developer Guide”文档Part I的第2章,以期能够对原始的SRDEMO项目有大概的了解。
附件项目是用ORACLE的JDEVELOPER 10.1.3.3建立的,你在打开的时候也需要这个工具。ORACLE JDEVELOPER是免费提供的,信息及下载地址是:http://www.oracle.com/technology/products/jdev/index.html。
主要更改
对原始的SRDEMO的主要更改包括以下几个方面:
1. 数据库和数据库访问。原始的SRDEMO项目基于ORACLE数据库建立,使用TOPLINK技术来访问数据库。改造后的项目基于hsqldb嵌入式数据库,使用hibernate 3作为数据库访问接口。为了更好地实现事务的支持,将hibernate与流行的spring 2进行了集成,使用了spring 2的声明式事务管理和DAO访问支持。
2. 业务逻辑封装。上面提到,原始的SRDEMO项目用EJB 3.0的无状态BEAN来实现业务逻辑,改造的项目使用了普通的JAVA BEAN来实现业务逻辑。基于普通JAVA BEAN的业务实现代码的接口与原始的EJB 3.0完全一致。
3. 页面展示。原始的SRDEMO程序使用声明式数据绑定技术来实现后台数据与前台页面的共享,改造的项目去除了声明式数据绑定,直接使用标准的JSF数据绑定技术。
4. 其它更改。其它的更改比较多,例如使用LazyList来实现数据的延时加载;修改了默认的Oracle样式表,使之更符合中文的习惯;使用动态的页面对象绑定技术实现了页面的模板化。实现了SimpleValueHolder接口和GenericTreeNode类,用于值的回存和恢复以及ADF Faces Tree组件的节点支持。
<o:p> </o:p>
以下“项目”指改造后的SRDemoSample项目。<o:p></o:p>
项目总体架构
<o:p> </o:p>
项目的运行架构可分为后台数据管理和前台UI展示两个部分。
后台数据管理的功能主要通过两个Service来实现,分别是代表管理功能的SRAdminService和代表公开功能的SRPublicService。这两个Service被Spring所管理。Spring同时还管理Hibernate对数据库的访问。后台数据管理中,因数据访问较为简单,故未使用单独的DAO层,而是把DAO功能融合到Service中了。
Spring的管理范围仅在后台数据管理,前台UI展示中未使用。BeanLocator起到了桥梁的作用,使前台UI的Managed Bean能够得到Service的实例。
页面展示除登录页面外,全部使用最新基于XML的JSP格式:JSPX。JSPX与传统的JSP相比,最大的特点是完全用XML来描述页面的内容,绝不出现HTML的代码。
附件3和附件4请见:http://hunte.iteye.com/admin/show/123559