2014-06-14 Created By BaoXinjian


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

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

EO在Module中的地位:

从图上可看出,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又为两种类型(主要从编程控制方法来分)

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


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

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

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

Package:  <yours company>.oracle.apps.<appl short name>.<component>.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 Key,OAF会自动帮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中有BLOB或CLOB字段

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

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

<Your EO name>EOImpl

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

Oracle.apps.fnd.framework.server.OAEntityDefImpl

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

<Your EO name>Expert

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

oracle.jbo.Key

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


案例:建立一个Invoices Header对应的EO

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

Step 2: 选择EO包含的字段

Step 3: 定义字段的属性

Step 4: 生成JAVA文件及方法

Step 5: 定义EO的Turning 属性

Thanks and Regards

参考:Tony Liu 深入EO系列和Developer Guide

OAF_EO系列1 - Definition定义(概念)的更多相关文章

  1. SharePoint 2013 图文开发系列之列表定义高级篇

    转载自  http://www.cnblogs.com/jianyus/p/3484714.html SharePoint列表库,是我们使用过程中最常用的库,下面,我们简单介绍下代码定义自定义列表,主 ...

  2. jquery系列教程7-自定义jquery插件全解:对象函数、全局函数、选择器

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

  3. [AngularJS] “路由”的定义概念、使用详解——AngularJS学习资料教程

    这是小编的一些学习资料,理论上只是为了自己以后学习需要的,但是还是需要认真对待的 以下内容仅供参考,请慎重使用学习 AngularJS“路由”的定义概念 AngularJS最近真的很火,很多同事啊同学 ...

  4. Android画图系列(二)——自己定义View绘制基本图形

    这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...

  5. faster-rcnn系列原理介绍及概念讲解

    faster-rcnn系列原理介绍及概念讲解 faster-rcnn系列原理介绍及概念讲解2 转:作者:马塔 链接:https://www.zhihu.com/question/42205480/an ...

  6. 原创】Java并发编程系列2:线程概念与基础操作

    [原创]Java并发编程系列2:线程概念与基础操作 伟大的理想只有经过忘我的斗争和牺牲才能胜利实现. 本篇为[Dali王的技术博客]Java并发编程系列第二篇,讲讲有关线程的那些事儿.主要内容是如下这 ...

  7. OAF_EO系列2 - Validation数据校验验证机制(概念)

    2014-06-12 Created By BaoXinjian

  8. OAF_EO系列6 - Delete详解和实现(案例)

    2014-06-14 Created By BaoXinjian

  9. OAF_EO系列5 - Update详解和实现(案例)

    2014-06-14 Created By BaoXinjian

随机推荐

  1. php遇见的错误(一)

    1.linux 执行脚本时报的错 Call to a member function on a non-object in    是没有实例化对象 解决方法 new类2.在给一个表增加一个新字段或者改 ...

  2. C语言中强制数据类型转换(转)

    原文地址不详 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0-255(有些 ...

  3. CSS中控制换行的四种属性

    一.white-space 可以实现HTML中PRE标签的效果,以及单元格的noWrap效果,点此查看示例. Example Source Code 语法: white-space : normal  ...

  4. 系统镜像以及微PE工具箱

    微PE地址:http://www.wepe.com.cn/download.html MSDN镜像下载地址:http://msdn.itellyou.cn/ 小白也能轻松装系统(win10 64位) ...

  5. 论文笔记之:Visual Tracking with Fully Convolutional Networks

    论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015  CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...

  6. ogistic regression (逻辑回归) 概述

    :http://hi.baidu.com/hehehehello/blog/item/0b59cd803bf15ece9023d96e.html#send http://en.wikipedia.or ...

  7. 经典ASP.NET MVC3.0入门详解

    http://blog.csdn.net/csh624366188/article/details/7064269 :由于本文原在word文档里编写,写本文章时运用了大量截图,直接复制到博客里,没有显 ...

  8. c#强制执行内存回收

    [DllImport("psapi.dll")] private static extern int EmptyWorkingSet(int hProcess); GC.Colle ...

  9. NET软件开发中的事务大全

      各种事务很全啊. 原文地址:http://www.cnblogs.com/ltp/archive/2009/06/17/1505304.html     1 .NET开发中的事务处理大比拼 之 S ...

  10. shell知识点

    各个项目以实践为主.原理及更多细节介绍,请查看官方文档: 例如:bash,grub,postfix,pam,fastcgi,httpd,rsync等诸多项目. 各种总结表格 http://www.cn ...