ADFModel:DBSequence(讨论一)

Go to My Oracle Blog

创新互联于2013年成立,是专业互联网技术服务公司,拥有项目网站建设、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元龙陵做网站,已为上家服务,为龙陵各地企业和个人服务,联系电话:18982081108

刚开始使用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@]
网页题目:ADFModel:DBSequence(讨论一)
标题路径:http://bzwzjz.com/article/jidcdp.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都营销网站制作 成都网站制作 成都模版网站建设 响应式网站设计方案 成都网站建设 网站建设 企业网站建设 成都网站设计 四川成都网站建设 成都网站设计制作公司 教育网站设计方案 成都网站设计 网站建设 营销型网站建设 成都企业网站设计 攀枝花网站设计 网站设计制作 手机网站制作 成都网站建设流程 企业网站建设公司 网站设计 温江网站设计