OAF学习笔记-Entity Object Overview(深入EO系列)

前言通过详细阅读User’s Guide, 整理一下学习BC4J Module中很重要的Entity Object 的心得.

何谓Entity Object? User’s Guide中有比较形象的描述:

针对表,视图,快照封装商业规则,可用于多种客户端(不仅限于OA Framework),并包含所有的针对这些数据库对象的验证及行为.

EOModule中的地位:

 

从图上可看出,EO处于DB上层,VO下层。这就决定了,EO可调用DB层的CLASS,而只有VO可调用EO层的CLASS

下面是关于EO的一些描述:

  1. 每张表至多有一个Entity Object:  我的理解,你不能把一张表拆开两部分,各建一个EO.
  2. 每个EO须包括表中所有的Attribute(即字段).
  3. EO,你可以编写字段初始化,   Attribute(字段级)校验,  Entity(多字段联合)校验
  4. 你可以建立EX(Entity Expert) 实现多EO之间的校验.

EO又为两种类型(主要从编程控制方法来分)

JAVA Entity Object基于JAVA语法来实现数据操作的EO.

PL/SQL Entity Object: 基于PL/SQL Store Procedure来实现数据操作的EO.

后面我会详细补充两种EO的使用心得.

EO的建立过程:

JDEV 提供了Wizard 来建立EO. 你可以按照向导一步一步完成一个EO的建立:

Step 1:  定义EO名称,路径及对应的数据库对象

 

Name:  xxxxEO (应按照Object name standard 来命名).

Package:  .oracle.apps...schema.server

Extends Entity:  留空(除非你要继承一个已有的EO).

Schema Object:  根据应用选择表,视图,同义词或快照.

Database Schema: 选择应用.

Step 2:  选择EO包含的字段

 

1. 显示了表中所有的字段,OAF中称为Attribute.

2. 建议不要Remove任何字段,除非基表已发生变化.

3. 如基表增加了字段,点击New from table… EO中新增Attribute.

4. 如要增加非表中字段(比如计算字段),可点击New…

5. 建议表中最好包括WHO字段,否则后面在编译时会报错...

Step 3:  定义字段的属性

 

  1. 建议不要更改Attribute Name , Attribute Type , Database Column Name&Type. 这是OAF从数据库中提取出来的,和表是一致的请注意,这里的Attribute Name 很重要,是我们在OAF将要使用的名称,而非Database Column Name
  2. 默认的,所有字段均须勾选  Persistent (稳定  Queriable(可查询)
  3. 如表中定义有Primary Key,则这里的Primary Key会自动勾选,如表中没有,你可以选择一个Attribute来勾选,PK Attribute 中的值须具有唯一性,是操作Row的依据。勾选Primary Key后,请务必把Mandatory(强制)勾选。如果你没有勾选Primary KeyOAF会自动帮EO建一个ROWID 列做为PK
  4. 不要勾选Unique, 这个选项不会影响PK的使用。
  5. Discriminator选项用于Polymorphic EO(多态EO)(后述).
  6. Change Indicator 用于Object version number Column,即这张表需要用此字段来记录更新版本(ERP标准表中常有这种字段,客户化系统中一般没有).
  7. 通过勾选Updateable中的选项来定义字段是否可修改.
  8. 通过勾选Refresh After来定义在执行Database Trigger后是否刷新EO

Step 4: 生成JAVA文件及方法

 

除了Data Manipulation Methods不选外,其它都选(具体原因有待研究)。

勾选后,OAF会自动生成此EO对应的CLASS文件,并内置好相应的方法(标准方法,你可以按照需要进行扩展)。

Step 5: 定义EOTurning 属性

 

勾选  Use Update Batching, 并设定Threshold(上限) 100

这个选项有什么作用呢?User’s Guide中有描述(但我不太明白)

1.  此选项非常重要如果你的EO是针对多语言表的时候(即表名后有_TL后缀的)

2.  有些情况下,这个选项是不能勾的:

a.       如果你的EO PL/SQL EO

b.       EO中有BLOBCLOB字段

c.       没有PK或只有ROWID PK

d.       当你勾选了  Refresh After中的任一项

User’s Guide对此选项的说明是此选项可使OAF在一个提交动作中包含多个DML 处理,比如可一次更新多个Row

至此,一个EO就建好了,你就可以通过VO来调用它,在Page上对数据库表进行操作了。

 

Entity Object:

针对表/视图/同义词/快照, 封装商业逻辑和DML 处理.

JAVA Entity Object:

不修改OAF中标准的DML 处理功能,使用标准的JAVA 语句完成对数据的处理。

主要的Object Module Class:

Oracle.apps.fnd.framework.server.OAEntityCache

存放查询数据的缓存, 多个基于此EOVO共享同一个Cache.

EOImpl

继承于oracle.apps.fnd.framework.server.OAEntityImpl. 此对象表示EO本身,当被实例化后,表示数据中的一行

Oracle.apps.fnd.framework.server.OAEntityDefImpl

描述组成EO的无素,例如Attributes, Events, Validators, Associations, Properties.

Expert

继承于oracle.apps.fnd.framework.server.OAEntityExpert.

oracle.jbo.Key

代表Primary Key and  Foreign Key and composite row identifier.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10359218/viewspace-677450/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10359218/viewspace-677450/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值