从品牌网站建设到网络营销策划,从策略到执行的一站式服务
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
咨询相关问题或预约面谈,可以通过以下方式与我们联系
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询400-028-6601
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图