OAF 教程5BC4JWord格式.docx
《OAF 教程5BC4JWord格式.docx》由会员分享,可在线阅读,更多相关《OAF 教程5BC4JWord格式.docx(33页珍藏版)》请在冰豆网上搜索。
![OAF 教程5BC4JWord格式.docx](https://file1.bdocx.com/fileroot1/2022-11/15/94edd535-624b-4559-b12c-c1735451c9f2/94edd535-624b-4559-b12c-c1735451c9f21.gif)
下图给出了该体系结构的一个高级视图。
BC4J框架提供了两个运行于数据库的重要对象:
实体对象和视图对象。
∙实体对象为数据库表(或视图、同义词、或快照)存储商务逻辑和列信息。
实体对象回答了"
什么对象与商务相关?
"
的问题.在问题域中它们是名词。
您能够从现有的数据库表来创建实体对象(反向生成),或者定义实体对象,并使用它们来创建数据库表(正向生成)。
∙视图对象使用SQL查询来指定过滤的商务数据子集,这些数据能够与实体对象的属性相关。
视图对象回答了"
什么数据与任务相关?
的问题。
您可以查询一组数据,并完全按您希望的方式显示出来。
视图对象定义视图行类的属性,视图行类代表查询结果中的一行,而且也可以指底层的实体对象。
视图对象为客户提供了行的集合,他们可以对它进行滚动和更新,而不需要考虑或了解底层实体对象。
客户可以通过导航结果集来操纵数据、获取和设置属性值;
当提交事务时,将会对底层数据库中的数据做出相应更改。
视图对象之间的关系用视图链接来表示。
每个视图对象都提供了一个默认的迭代器,您可以用它来导航该对象的结果集。
例如,下图展示了视图对象、实体对象和底层数据库表之间的关系。
名为EmpNames的视图对象对Emp实体对象操作,提供EMP表中EMPNO和ENAME列的视图。
通过消除与常见的"
应用程序探测"
设备相关的大量编码和测试工作,BC4J使应用程序开发人员可以将全部时间集中在实施商务解决方案上。
使用这个框架的好处包括减少开发成本、降低工程风险以及缩短上市时间。
关于事务
事务是管理数据库操作的接口。
事务中所有修改数据的操作必须在服务器接受这些修改之前成功完成。
这些操作包括设置属性值,标准SQL调用(如INSERT、UPDATE和DELETE),或者更专门的类似于RPC的调用(如调用Java存储过程或PL/SQL程序包)等方法。
事务是不可分割的单元;
事务中的操作结果可以被全部提交(保存到数据库)或者被全部回滚(撤销)。
例如,当客户在使用银行服务从一个存款帐户转帐至一个支票帐户时,此事务由三个单独的操作组成:
减去存款帐户中的金额、增加支票帐户中的金额,以及在一个事务日志中记录该事务。
如果全部执行了这三个操作来保持帐户正确的收支平衡,则该事务被提交,操作结果被施加给数据库。
但是,如果某些情况(如资金不足、帐号无效或硬件故障)使得这些操作中的任何一个不能成功完成,则必须回滚整个事务,使所有帐户的收支平衡保持正确。
事务也为大量的共享数据提供了多用户一致性。
当客户修改数据时,锁确保了其他客户在第一个客户完成操作之前不能进行其他的修改。
当事务被提交或回滚时,锁被释放。
这是一种"
悲观的"
锁定模式,Java商务组件框架默认采用这种模式。
应用程序模块提供了默认的事务和并发支持。
无需编写代码,除非您想自定义默认行为。
设计
取决于您希望的工作方式,您可以自动地从现有的数据库表创建实体对象(反向生成),或者定义实体对象,然后使用它们来自动地创建数据库表(正向生成)。
使用反向生成时,首先定义数据库表(也可能是视图、同义词和快照),然后通过以下工具中的一个或多个来使用它们,以创建实体对象和关联:
EntityObjectWizard或EditorBusinessComponentsProjectWizardPackageWizard或Editor。
开发小组通常从数据库设计或UML图开始,数据库管理员为图中的每个实体创建一个表。
该表具有对应于实体属性的列,以及基于实体间关系的数据库约束条件。
通过商务组件向导使用这些表来创建实体对象和关联的初始化定义。
之后,程序员自定义这些商务组件来实施应用程序的商务逻辑。
在使用正向生成时,根据商务组件的定义自动创建数据库表和数据库约束条件。
然后,数据库管理员可以根据需要重新定义生成的表和数据库约束条件。
OTN开发人员在BC4J-VSM中使用反向设计,因为应用程序基于先前在VSM的J2EE版中使用的数据库模式。
因此,从表来开发实体要比从头开始构建它们更容易。
不过,如果您在构建一个全新的应用程序,正向生成可以为您提供比根据数据定义行为对实体行为进行更好的控制。
BC4J-VSM设计的其他方面包含在此教程系列的各种课程中。
实施
BC4J-VSM实体在oracle.otnsamples.vsm.entities程序包中实施,而视图在oracle.otnsamples.vsm.views程序包中实施。
Oracle9iJDeveloper环境提供全面的工具支持将BC4J框架组件用于J2EE应用程序中。
您可以使用交互式的向导、编辑器、特性检查器和UML图来创建、增强和部署BC4J组件。
这些工具被紧密地集成在一个完整的JavaIDE中,它包含了调试、部署和源代码控制支持,因此您能够在J2EE应用程序开发生命周期从始至终都使用一个工具。
当您使用BC4J向导从现有的表创建实体对象时(反向生成),它为每个数据库表创建一个实体对象。
它为数据库表中的每一列创建一个实体属性,每个属性可以和列有相同或不同的名称(对商务应用程序更有意义)。
实体对象的属性定义反映和增强了各个数据库列的特性,包括数据类型、列约束条件,以及精度和尺寸规格。
实体对象可能每列有一个属性,或者您可以使用一个子集,例如,如果您不需要使用该列或者一个表包含了多个实体的信息。
您也可以使用BC4J向导来定义实体对象和它们的属性,而无需从现有的数据库表开始(正向生成)。
当您使用向导从实体对象生成数据库表时,它为每个实体对象创建一个表,为每个实体属性创建一个表列,并且根据实体属性设置创建列约束条件。
此外,您可以使用实体约束条件向导来定义表约束条件。
编写商务逻辑的最佳位置是在实体对象内,因为它们为所有的数据视图实施一致的商务逻辑,这些视图可通过任意类型的客户界面来访问。
商务逻辑包含以下项目:
∙商务规则和策略-当增加或修改数据时,能够确保将数据添加到数据库之前它符合组织的流程。
例如,当一名员工升职时,可以增加他的薪水;
员工在公司工作三年后,给他三个星期的假期;
或者在一份订单的所有商品都邮寄给客户后,修改订单的状态。
∙验证逻辑-当增加新的数据时,能够在将其存储到数据库之前确保该数据是有效的。
例如,可以确保一个工作代号是一个有效的工作代号。
∙删除逻辑-可以确保只有在合适的情况下数据才被删除,并且确保任何相关的情况都能得到处理。
例如,可以防止一名休假的员工被删除。
∙运算-可以在商务逻辑层中高效地执行数据运算。
例如,可以根据小时工资率计算一名员工的月工资。
∙默认值逻辑-当生成新的数据时,可以添加适当的默认值。
例如,可以根据员工的工作代号提供默认的福利计划。
∙安全性-可以确保只有拥有相关权限的用户才能读和修改数据。
例如,可以确保只有直接管理人员才能修改员工的工资。
.如果修改不合适,实体对象中的商务逻辑立即为用户提供反馈。
这样,内存中的商务模式将始终保持一致。
可以在以下向导中创建默认视图对象:
BusinessComponentsProjectWizard或EditorPackageWizard或EditorEntityObjectWizard,可以根据现有的关联创建默认的视图链接,以及使用BusinessComponentsProjectWizard或Editor或PackageWizard或Editor创建默认的应用程序模块。
构建商务组件(BC4J)
本教程描述了OTN开发人员如何在BC4J-VSM示例应用程序中构建商务组件和实施J2EE设计模式。
概念
∙关于BC4J
∙设计模式概述
∙关于BC4J与设计模式
关于BC4J
Java商务组件(BC4J)是Oracle9iJDeveloper使用可重用商务组件来构建多层数据库应用程序的编程框架。
这种应用程序通常由以下部分组成:
∙一个用Java和/或HTML编写的客户机用户界面
∙一个或者多个商务逻辑层组件,提供商务逻辑和商务对象视图
∙数据库服务器中存储底层数据的表
下图展示了一个多层配置的例子。
BC4J为创建可伸缩的高性能Java2企业版(J2EE™)应用程序提供了一个基于标准的服务器端框架。
该框架提供了设计时工具和运行时服务来简化构建、调试、定制和重用商务组件的任务。
使用BC4J开发的应用程序能够在任何J2EE平台上部署,而且可以从范围广泛的客户机(包括Web浏览器、专业桌面客户机、XML客户机、以及无线设备)访问该应用程序。
该框架利用内置的行为处理普通的开发案例,您可以利用这些优势而不必降低您控制应用程序运行方式的能力。
只需几行代码,您就可以方便地在特定于域的组件中覆盖该框架所提供的任何行为,因此您可以灵活地使用各种操作方式。
在BC4J框架中的两个关键的对象是实体对象和视图对象。
它们在BC4J-VSM中扮演重要角色。
概括地说,实体对象封装商务逻辑结构(如产品线、部门、销售)的商务策略和数据,和区域商务文档(如发票、更改订单),以及服务请求的物理项(如仓库、雇员和设备)。
具体的说,一个实体对象为一个数据库表(或视图、同义词、或快照)存储商务逻辑和列信息。
您能够从现有的数据库表来创建实体对象(反向生成),或者定义实体对象并利用它们来创建数据库表(正向生成)。
视图对象使用SQL查询来指定过滤的商务数据子集,这些数据能够与实体对象的属性相关。
您根据客户需要展示的内容来创建视图。
数据的视图可以基于但同时要独立于底层的实体对象,从而能够允许使用灵活的数据检索方式,以便支持所需的UI。
换句话说,您可以查询一组数据,并完全按照您希望的方式显示出来。
视图对象定义视图行类的属性,视图行类代表查询结果中的一行,而且也可以是指底层的实体对象。
视图对象为客户提供了行的集合,他们可以对它进行滚动阅读和更新,而不需要考虑或了解底层实体对象。
客户可以通过浏览结果集来操纵数据、获取和设置属性值;
当事务处理被提交时,将会对底层的数据库做出相应更改。
试图对象之间的关系用视图链接来表达。
每个视图对象都提供了一个默认的循环程序,您可以用它来浏览该对象的结果集。
一个名为EmpNames的视图对象操纵Emp实体对象来提供一个包含EMP表的EMPNO和ENAME列的视图。
此外,BC4J还有一个叫做应用程序模块的概念。
应用程序模块是客户和数据库都要与之进行交互的对象。
它包含了代表您的数据视图的视图对象并管理在这些数据上进行的事务处理。
例如,您可以有一个执行操作(如处理在线订单或处理工资增长)的应用程序模块。
商务组件框架是一个带有内置的应用程序功能的类库(位于oracle.jbo.*)。
使用此框架涉及限定基类以引入特定于应用程序的行为,允许此框架协调对象之间的许多基本交互。
利用内置在Oracle9iJDeveloper中的BC4J设计过程向导和编辑器,您能够通过定义组件的特征(