在ADF BC中,可以Declarative的方式定义业务需要的VO,这时VO的定义就是一个XML文件。
一个Java类可以有多个实例对象,VO也是,一个VO定义可以关联多个VO实例,并且每个VO实例在取数据的时候是不相关的。
当然,也可以使用Java代码动态创建VO(VO定义,VO实例)。
VO定义例子:
<ViewObject
xmlns="http://xmlns.oracle.com/bc4j"
Name="EmployeesVO"
Version="11.1.1.56.60"
SelectList="EmployeesEO.EMPLOYEE_ID,
EmployeesEO.FIRST_NAME,
EmployeesEO.LAST_NAME,
而VO实例是在AM中生成的,类似Java的实例对象:
<AppModule
xmlns="http://xmlns.oracle.com/bc4j"
Name="AppModule"
Version="11.1.1.56.60"
ClearCacheOnRollback="true"
ComponentClass="model.AppModuleImpl">
<DesignTime>
<Attr Name="_deployType" Value="0"/>
<Attr Name="_isCodegen" Value="true"/>
</DesignTime>
<ViewUsage
Name="EmployeesVO1"
ViewObjectName="model.EmployeesVO">
<ViewCriteriaUsage
Name="EmployeesVOCriteria"
FullName="model.EmployeesVO.EmployeesVOCriteria"/>
</ViewUsage>
下面对EmployeeVO export了EmployeesVO1和FixDeptEmps两个实例,分别使用了不同的View Criteria:
EmployeesVO1的View Criteria:
FixDeptEmp的View Criteria:
运行,查看不同状态:
EmployeesVO1中只有一条数据:
FixDeptEmp中查询出所有在Department 100中的员工:
总结:在ViewController层,可以使用不同的VO实例,引用同一个VO定义,进行数据的Insert、Query等操作,而创建不同的VO定义不是必须的。