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

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

何谓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又为两种类型(主要从编程控制方法来分)

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 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: 定义EO的Turning 属性

 

勾选  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.

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/

保姆级教程:手把手教你从NASA Earthdata下载ASTER L2地表温度数据(附shp文件拖拽技巧) 本文提供了一份详细的NASA Earthdata平台ASTER L2地表温度数据下载教程,涵盖账号注册、数据筛选、shp文件拖拽技巧及质量检查等关键步骤。特别适合遥感领域初学者,帮助快速掌握高效获取ASTER L2T数据的方法,适用于城市热岛效应和农业监测等研究。 阅读详情

相关推荐

世界坐标系/相机坐标系/图像坐标系 转换

目录一、各坐标系简要介绍二、坐标系转换2.1 世界坐标系转为相机坐标系2.2 相机坐标系转为物理图像坐标系2.3 物理图像坐标系转为图像坐标系2.4 总结2.5 为什么要使用齐次坐标参考文献 一、各坐标系简要介绍 首先介绍数字图像处理领域中的图像坐标系,如上图左图所示,坐标系O_0为图像坐标系,其原点是在图像的左上角,每一个像素通过其所在位置的列数和行数索引 (u,v) 来表示。 另外需要建立图像坐标与物理单位的关系,而后才能将目标的真实世界坐标转换为图像坐标。即建立以物理单位表示的物理图像坐标系(有些文

流觞时光 1万+

View Object和Entity Object

Entity 最常用实体类,基本和数据表一一对应,一个实体一张表。 entity object 通常都是表的一一对应的映射,什么意思呢? 就是表里面有什么字段,实体对象就有什么属性。 既然有实体对象了,为什么还需要view object呢? - view object view object,又叫做视图对象 因为有的时候,没有必要把所有的信息都呈现给客户,只需要呈现部分数据给客户,这个时候,就会把这些必要的数据,封装在view object里抛到页面上去显示。 说的简单易懂 大家应该理解了吧 ..

m0_46880425的博客 632

Dify插件实战:实时渲染AI生成的HTML/SVG/Canvas代码

在现代Web开发与AI应用集成中,前端渲染技术是实现动态内容展示的核心。其原理在于浏览器引擎解析HTML、CSS、JavaScript等代码,并将其转换为可视化的用户界面。这项技术的价值在于极大提升了开发效率与用户体验,允许开发者快速构建和迭代交互式应用。在AI应用开发领域,尤其是大语言模型(LLM)集成场景,如何将模型生成的**结构化代码**(如描述UI的HTML或数据图表的SVG)实时转化为可视化组件,成为一个关键需求。这直接关系到**Dify**等低代码AI平台能否提供流畅的、所见即所得的交互体验。本

weixin_42545664的博客 498

Create ADF REST Services

This article provides a step-by-step guide for the beginners to create their first Rest Web Service using Oracle ADF as well as operate the resources. Create an ADF REST Web Application File - New -...

bettyHHUC的博客 351

AutoCAD 2024 LISP实用技巧:自定义快捷命令与高效绘图工具集

本文详细介绍了如何在AutoCAD 2024中部署和使用LISP脚本,打造高效绘图工具集。通过自定义快捷命令,如WFF(超级文字查找替换)、GQT(图层隔离)和LLTJ(智能长度统计),可大幅简化图层管理、文字编辑和测量统计等重复性操作,显著提升绘图效率。

gan8painter的博客 318

射频捷变收发器(RF Agile Transceiver) 国内外产品的现状、发展趋势及对比分析2

由于通信系统的研究、设计和实现的巨大进步,RF(射频)设备的新时代正在到来。特别是,随着通信、航空航天和防务以及高速仪器仪表、物联网(IoT)和协作传感器网络(CSN)的发展,以实现宽带高速通信,移动通信中频谱上不断增加的数据量要求而采用新颖的解决方案,以动态方式满足流量交换。然而,当前最先进的技术和设备需要一个合理的成熟时间来满足当前和即将到来的通信标准。

legendddh的博客 2609

EBS直接登录到forms

ICX: Forms Launcher

科华在线 1825

3DGS实战笔记:从相机坐标系到屏幕像素,手把手推导高斯椭球的投影变换矩阵

本文详细解析了3D高斯散射(3DGS)技术中从相机坐标系到屏幕像素的几何变换过程,重点推导了高斯椭球的投影变换矩阵。通过视图变换、投影变换和视口变换的完整流程,结合雅可比矩阵处理协方差矩阵,实现了高效的三维重建与渲染。文章提供了Python代码示例,帮助开发者深入理解3DGS的核心几何变换机制。

weixin_28691741的博客 438

DDD思考之二 需要区分Entity和Value Object吗

开始看infoq的mini book时,我以为这不是个问题。Entity就是有主键的对象,Value Object就是immutable class, so easy. 然后就越看越糊涂了。糊涂在于Value Object究竟是个什么东西:按书中所说,Value Object最好是immutable class, 但在某些情况下,比如修改非常频繁,或者创建/删除对象代价很大,也允许mutabil...

u012619290的博客 2017

深入解析USB3.0一致性测试的关键技术与实践指南

本文深入解析了USB3.0一致性测试的核心技术与实践指南。文章阐述了测试如何确保设备在5Gbps高速传输下的信号完整性、电源管理合规性及协议兼容性,并提供了从测试系统搭建到完整流程执行的实战经验,帮助工程师有效应对高速信号、电源与兼容性三大核心挑战。

weixin_29164091的博客 281

微处理器实验报告-实验四

实验四 可编程定时/计数器8253实验 一、实验要求 利用8086外接8253可编程定时/计数器,可以实现方波的产生。 二、实验目的 1、学习8086与8253的连接方法。 2、学习8253的控制方法。 3、掌握8253定时器/计数器的工作方式和编程原理

青竹小轩的博客 5110

List,Map,Entity,Object数据类型之间的转换

前些天在做项目过程中遇到的最多的就是数据类型之间的转换,例如将List集合转换成实体,或者将Object转换成实体再或者将Object转换成Map等,最开始做这些类型转换的实现着实让我头疼了一番,首先我们前台接收的都是Json熟数据,所以在Controller中需要将上面提到的不同类型全部转换为Json,当然了,我们使用的是底层封装的方法,这里我们用起来非常方便,至于Services成或者Dao层

致力于顶级java全栈工程师 1万+

GD32F4系列替换STM32F4,HAL库CAN初始化卡死?一个Sleep模式的坑与填坑实录

本文详细解析了GD32F4系列替换STM32F4时,HAL库CAN初始化卡死的问题根源——Sleep模式差异。通过对比两款芯片CAN控制器的默认状态,提出了不修改HAL库源码的解决方案,即在HAL_CAN_MspInit()中清除SLEEP位,并分析了该方法的优势。文章还提供了国产MCU替换的通用建议和调试技巧,帮助开发者高效解决问题。

weixin_29174013的博客 217

OAF学习笔记-JAVA Entity Object 之 Create data(深入EO系列)

在<Your EO name>EOImpl.java中,如果你在建立EO的Wizard中选择了生成Create Method,则里面应已包含了标准方法 create(). Page上面的新增记录即调用此方法。 public void create(AttributeList attributeList)  { super.create(attributeList);

haqer0825的专栏 1518

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OAF控件及常见问题汇总

/*OAF控件及常见问题使用 OAF 东方瀚海 http://fccjxxw.com/m/b071defc4afe04a1a8ede1b4.html**/ 点击此页面传一个值,并且此值会一直有效做法 参考博客:http://hutianci.iteye.com/blog/1015925 (1)在前台第一次进页面初始化时存值获取[在控件formValue存执]*/ OAFormV

ForeverDWYW的博客 6111

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

OAF—Entity Object Overview

针对表,视图,快照封装商业规则,可用于多种客户端(不仅限于OA Framework),并包含所有的针对这些数据库对象的验证及行为. EO在Module中的地位: 从图上可看出,EO处于DB上层,VO下层。这就决定了,EO可调用DB层的CLASS,而只有VO可调用EO层的CLASS。 下面是关于EO的一些描述: ...

weixin_34378922的博客 201

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充

EBS OAF开发中的Java 实体对象(Entity Object)验证功能补充(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)EO理论上是只有产品组维护,里面包含其所有的业务逻辑,并提供相应的Expert给自己或者其它产品组使用。而VO是各个组根据需要或基于EO或者只读的SQL而建立的,里面可以根据需要添加自己的业务实现和逻辑。对于EO内

tavor的专栏 2247

ebs java开发_EBS OAF开发中的Java 实体对象(Entity Object)<三>

EBS OAF开发中的Java 实体对象(Entity Object)回滚OAF对提交和commit动作实现为”所有或者什么都不做”的事务方式。不论错误的严重程度,如果数据库提交或者commit失败,OAF会:l 发出一个JDBC回滚来释放数据库锁。注意:这不对中间层的状态有不利的影响。l 重置视图对象行状态这样可以对这个事务做第二次提交尝试。注意:这意味着你不需要明显的回滚失败的实体对象事务...

weixin_39849239的博客 365

EBS OAF开发中的Java 实体对象(Entity Object)<二>

属性级别的验证   就像在第三节getEntityState()描述的,不论何时当带有带更新值的页面发出HTTP POST请求时,OAF会把这些值写回到潜在的视图对象,依次通过调用设置器来把这些值写回到潜在的实体对象。因为每个属性的验证应该添加到它的设置器(参考下面示例中ToolBox PurchaseOrderHeaderEOImpl的 setHeaderId()方法),调用实体对象设置器的...

lz1365871801的博客 242

EBS OAF开发中遇到的奇葩错误JBO-25003的分析和解决

EBS OAF开发中遇到的奇葩错误JBO-25003的分析和解决(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)OAF开发了遇到了一个奇葩的错误:oracle.apps.fnd.framework.OAException:Application: FND, Message Name: FND_GENERIC_MESSAGE. Tokens:

tavor的专栏 7766

OAF学习笔记-JAVA Entity Object 之 Delete Data(深入EO系列)

Delete data(删除数据) 在FORM里面删除记录相当的容易,因为FORM可以根据你光标所在的行来删除当前记录,只要简单的在Trigger里面写上delete_record 就可以了. 但在OAF中,目前我所知道...

ctrms66804的专栏 200

OAF学习笔记-JAVA Entity Object 之 Update/Validate data(深入EO系列)

Update/Validate data(更新/校验数据) 在Update数据之前,我们往往要对待更新的记录进行有效性的校验,校验级别包括: Attribute Level Validation :字段级的校验 En...

ctrms66804的专栏 272

OAF学习笔记-JAVA Entity Object 之 Initialize data(深入EO系列)

Initialize data(数据初始化): 主要用于新增记录,方法主要由两个: 1. 在Design time 时设定Page item的Default value. 2. 在 Run time 时...

ctrms66804的专栏 201

OAF—Entity Object 之 Initialize data

Initialize data(数据初始化): 主要用于新增记录,方法主要由两个: 1.在Design time时设定Page item的Default value. 2.在Runtime时用编程方式设定. Default value的设定这里不说.留待后面”深入UI item”时再说. 这里主要说说如何利用编程方式设定. 在建好EO后,如果你...

weixin_33967071的博客 124
上一篇: OAF学习笔记-JAVA Entity Object 之 Initialize data(深入EO系列)
下一篇: OAF学习笔记-客户化应用的布署
ctrms66804
博客等级 码龄12年 4粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值