当表结构发生变化时,如何同步到ADF-BC中的EO?

187 篇文章 2 订阅
实际应用中,我们经常遇到数据库Schema发生改动,如添加和减少字段,修改字段类型,等等。
这时,已经生成的ADF-BC中的EO如何随之改变。JDeveloper 11g中已经考虑了这个问题。
下面我们以HR Schema中的Employees表为例说明。
为了不破坏原有的Employees表,我们复制并创建一个新表:Employees_Backup。
执行SQL语句:
CREATE TABLE employees_backup AS SELECT * FROM employees;
该语句会创建表Employees_Backup,表结构和数据完全和Employees表一样。
如果不想复制数据,可以执行:
CREATE TABLE employees_backup AS SELECT * FROM employees WHERE 1=2;

下面我们就以employees_backup表为例,来说明如何同步EO。

1. 当数据库表发生改变时,右键点击EO,选择“Synchronize with Database”

2. 如果数据库表没有任何改变,会提示“没啥可同步的”

3. 如果数据库表增加了一个字段,比如MiddleName
手工为表增加一个字段后,右键点击EO,选择“Synchronize with Database”,会发现

点击“Synchronize All",EO会随之改变

但EO对应的VO不会自动改变,需要手工增加

4. 如果数据库表删除了一个字段,比如MiddleName
出于安全起见,EO中对应的字段会变成Transient类型

可以发现,EO的MiddleName字段不再对应数据库表中的字段,而是对应到:“Synchronize:Fix_SQL”。

开发人员确认该字段不需要后,可以手工删除该字段。
如果删除时,有其它地方使用该字段,会提示

因为VO中还在使用这个字段,所以要先删除VO中的对应字段。

5. 如果数据库表修改了一个字段,比如把LastName的长度从25改到30

可以看到EO中的字段长度变成了30

引用该EO的VO,同样可以看到VO中的字段长度变成了30,无需人工修改。

6. 如果数据库表修改了一个字段,比如把Phone_Number从Varchar2类型改为Number类型

EO和VO会自动随之修改,无需人工修改。


7. 如果数据库表修改了一个字段,比如把Commission_PCT的名称改为Commission

在EO中,你会发现增加了一个字段:Commission,同时原有字段CommissionPct依然保留,不过变成了transient类型。
修改字段名称相当于做了一个增加(新字段)和删除(旧字段)的操作。

这时,需要我们手工删除CommissionPct字段,同时,需要手工处理引用该字段的VO。

参考文献:

1. http://jdeveloperfaq.blogspot.com/2010/02/faq-15-how-to-synchronize-adf-entity.html

http://maping930883.blogspot.com/2010/04/adf056adf-bceo.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值