ADF Model: DBSequence(讨论一) 2009-12-05 11:18:38
2015-08-14 15:37
453 查看
ADF Model: DBSequence(讨论一) 2009-12-05
11:18:38
分类: Java技术
Go to My Oracle Blog
刚开始使用ADF的同学基本都会问这样一个问题:
以HR schema为例:
如果列EMPLOYEE_ID的值由数据库端的Sequence负责产生,并且Sequence由Insert触发器调用,那么在中间层创建Employee的业务逻辑中当然不必考虑为此列赋值。
结果是,在ADF Faces或是JSF页面上进行创建Employee操作之后,发现EMPLOYEE_ID是一个负数,而所使用Sequence不产生负数。数据库内的值正常。
为了避免发生中间件Cache和数据库不同步的情况,需要了解Oracle专门为Sequence+Trigger这样的搭配***的一个domain class: oracle.jbo.domain.DBSequence。
如果把Entity Object的属性:EmployeeID的类型申明为DBSequence,那么就等于告诉了ADF Model以下几点信息:
1. 在Insert的时候这个列没必要让用户赋值。
2. 在Insert前为了确保它的值在Cache中唯一性,临时赋予一个唯一的负值。
3. 在Insert时不会先到数据库中取Sequence的值,而是直接插入。这样对性能有好处。
4. 在Insert后把获得的Sequence值从数据库再刷新回Entity Object的Cache。
实际上,当你使用触发器为列发放唯一值时,不一定要通过Sequence, 都可以利用oracle.jbo.domain.DBSequence。
所以,在这里我们不因该把EmployeeID的类型设为NUMBER或是其他什么,只要修改成DBSequence就解决问题了。
Todd
[@more@]
11:18:38
分类: Java技术
Go to My Oracle Blog
刚开始使用ADF的同学基本都会问这样一个问题:
以HR schema为例:
如果列EMPLOYEE_ID的值由数据库端的Sequence负责产生,并且Sequence由Insert触发器调用,那么在中间层创建Employee的业务逻辑中当然不必考虑为此列赋值。
结果是,在ADF Faces或是JSF页面上进行创建Employee操作之后,发现EMPLOYEE_ID是一个负数,而所使用Sequence不产生负数。数据库内的值正常。
为了避免发生中间件Cache和数据库不同步的情况,需要了解Oracle专门为Sequence+Trigger这样的搭配***的一个domain class: oracle.jbo.domain.DBSequence。
如果把Entity Object的属性:EmployeeID的类型申明为DBSequence,那么就等于告诉了ADF Model以下几点信息:
1. 在Insert的时候这个列没必要让用户赋值。
2. 在Insert前为了确保它的值在Cache中唯一性,临时赋予一个唯一的负值。
3. 在Insert时不会先到数据库中取Sequence的值,而是直接插入。这样对性能有好处。
4. 在Insert后把获得的Sequence值从数据库再刷新回Entity Object的Cache。
实际上,当你使用触发器为列发放唯一值时,不一定要通过Sequence, 都可以利用oracle.jbo.domain.DBSequence。
所以,在这里我们不因该把EmployeeID的类型设为NUMBER或是其他什么,只要修改成DBSequence就解决问题了。
Todd
[@more@]
相关文章推荐
- UIKit Core之笔记two--->>Socket
- java基础--GUI
- UIKit Core之笔记one
- 修复android 5.0 Xutils的框架问题retry error, curr request is null
- java.lang.CharSequence cannot be resolved
- UI设计,使用 线框图(页面示意图或页面布局图)
- UI设计 - 手机列表风格总结
- UI设计 - 首页(主页)的任务
- UI设计, 弹出对话框 设计(区分强调按钮和普通按钮,给用户一个 正向建议的强调按钮)
- UI设计,使用感知分层技术
- iOS 5.0 后UIViewController新增:willMoveToParentViewController和didMoveToParentViewController
- 56. Attribute value 属性
- Sequence(POJ--2442
- Java中的break和continue关键字使用总结
- Java中的break和continue关键字使用总结
- HDU 1159 Common Subsequence(动态规划)
- rest调用request是无状态的
- request对象获取客户端参数
- hoj 2275 Number sequence
- Kernel build & debug