节选自《Oracle ADF开发实战指南》
ADF 是以Java和Java EE为基础。如果你熟悉Java EE,下面的讨论就适合你。让我们看看这两个技术有什么共同的地方:
视图层
JSF是请求(request)驱动的MVC web框架,其目的是创建Java EE web应用时标准化web用户界面开发。ADFFaces是Fusion web应用的视图层,是建立在JSF基础之上的,并且增加了许多功能,例如图形图像,对话框架,声明式组件,数据流,可嵌入任务流和富AJAX支持的UI组件。
控制层
在Java EE web应用中,JSF控制负责拦截页面请求,并和必要的数据一起分发给相应的视图。JSF控制也控制页面导航(pagenavigation)。ADF控制是JSF控制的扩展,通过将单个web应用分解成多个可重用的web模块(称之为ADF任务流),支持模块化web应用开发。每个任务流有自己的事务属性,资源管理,管理bean定义和导航。
数据绑定层
ADF的数据绑定层(也称为ADF Model)非常独特,是Java EE中所没有的。ADF Model分离了UI和业务服务的实现,提供了对业务服务返回集的一般绑定行为。
Java EE web 应用中的CDI(Context andDependency Injection)的作用在概念上与数据绑定类似。但是,有很大的不同,我们将在后续章节中讨论。
业务服务层
ADF BC使得开发者不需编写企业应用需要的架构代码,简化了业务服务的实现。ADF BC主要由实体对象(entityobject,EO),视图对象(view object,VO),和应用模块(application module,AM)组成。
ADF实体对象与JPA(JavaPersistence API)实体类似,但是功能比JPA更强。ADF实体对象的主要优点有:在中间层对数据缓存的“开箱即用”的支持,成熟的事务管理,声明式验证支持,提交事务时触发SOA进程的能力。
ADF视图对象是数据映照组件。ADF视图对象与Java EE中的JPQL(Java Persistence Query Language)类似。与JPQL相比,ADF视图对象的优点有:可视化和声明式开发体验,支持创建模型驱动的UI,声明式状态管理。
ADF应用模块是覆盖了业务服务的事务组件,在概念上与EJB应用中的用sessionbean创建的sessionfacade类似。然而,我们必须记住的是尽管最终都是Java二进制文件和JDBC调用,这两个技术的实现完全不同。