adf4351使用

在使用ADF BC时,我们通常依赖于在数据库中执行DML操作的框架。 该框架在DBTransaction提交周期内正确地在数据库中进行了所有必要的更新。 很酷的事情是,在这种情况下,数据库事务将被自动管理。 因此,如果出现问题,如果某些实体无法发布到数据库,则框架将在提交过程的最开始将当前事务回滚到保存点。 此外,根应用程序模块的状态也将还原到同一点。 该框架为我们完成了所有这些工作,我们不需要关心它。

但是,当需要在数据库中执行一些DML以实现某种业务服务方法时,存在一个非常常见的用例。 让我们考虑AM实现类中的方法:

public void someBusinessMethod() {invokePLSQLProcedure1();modifySomeAttributes();invokePLSQLProcedure2();       getDBTransaction().commit();
}

该方法调用PL / SQL过程,修改数据库中的某些数据,修改实体缓存中的某些属性,调用另一个PL / SQL过程并执行提交。 想象一下,如果第二个PL / SQL过程调用失败,或者由于某种原因框架未能提交事务,将会发生什么。 显然,数据库中有一个锁,因为事务既不提交也不回滚。 此外,尽管someBusinessMethod失败,实体缓存仍包含由ModifySomeAttributes()方法修改的数据。 为了防止所有这些不好的事情,我们必须手动管理此事务。 让我们在AM实现类中有几个实用程序方法:

//Passivates the AM's state in the passivation storage
private String passivateStateForUndo() {String savePoint =super.passivateStateForUndo(null, null, PASSIVATE_UNDO_FLAG);return savePoint;}//Rollbacks the transaction and restores the AM's state
private void activateStateForUndo(String savePointId) {super.activateStateForUndo(savePointId,  ACTIVATE_UNDO_FLAG);   }

让我们在someBusinessMethod()方法中使用这些辅助方法:

public void someBusinessMethod() {String spid = passivateStateForUndo();try {           invokePLSQLProcedure1();            modifySomeAttributes();           invokePLSQLProcedure2();       getDBTransaction().commit();               } catch (RuntimeException e) {activateStateForUndo(spid);throw new JboException(e);}}

请注意, passivateStateForUndoactivateStateForUndo方法仅在AM状态管理方面与保存点一起使用,而实际上与数据库中的事务保存点无关。 activateStateForUndo方法会在数据库中执行真正的回滚 ,但是直到通过passivateStateForUndo方法拍摄快照时,AM状态(包括脏实体缓存)都将被还原。

而已!

翻译自: https://www.javacodegeeks.com/2015/01/managing-savepoints-with-adf-bc.html

adf4351使用

adf4351使用_使用ADF BC管理保存点相关推荐

  1. adf4351_使用ADF BC管理保存点

    adf4351 在使用ADF BC时,我们通常依赖于在数据库中执行DML操作的框架. 该框架在DBTransaction提交周期内正确地在数据库中进行了所有必要的更新. 很酷的事情是,在这种情况下,数 ...

  2. 使用ADF BC管理保存点

    在使用ADF BC时,我们通常依赖于在数据库中执行DML操作的框架. 在DBTransaction提交周期内,该框架正确地在数据库中进行了所有必要的更新. 很酷的事情是,在这种情况下,数据库事务将被自 ...

  3. adf4351使用_使用ADF绑定创建视图对象行CreateInsert操作

    adf4351使用 在这篇简短的文章中,我将重点介绍与在任务流中创建新记录的一种非常常见的方法有关的一个小陷阱. 让我们考虑一个简单的任务流程示例,该任务流程创建一个新的VO行,如果用户单击" ...

  4. adf 自动输稿器_在ADF实体PK属性中使用MySQL自动增量PK列

    adf 自动输稿器 大家好. 继续进行ADF + MySQL解决方法系列,今天我们将看到需要做些什么才能将MySQL PK自动增量列与ADF实体PK属性一起使用. 如果使用的是Oracle数据库,则可 ...

  5. ADF BC:创建绑定到业务组件的UI表

    在此示例中,我们将展示如何创建绑定到业务组件的简单UI表(af:table). 我再次尝试使用简单的标准在网上进行搜索: "如何创建绑定到业务组件ADF 11g的af:table" ...

  6. 网站输入正确账号密码页面刷新一下_Folx的密码管理保存网站登陆信息

    Folx的密码管理保存网站登陆信息 大家下载某个文件时,需要登录文件所在的网站才能进行下载,否则哪怕有下载链接也无权限进行文件下载,那Folx遇到这种情况是否就无法使用了呢?Folx的密码管理也能保存 ...

  7. 华东政法大学教学管理系统_华东政法大学教学管理信息系统登录入口、成绩查询网上选课查分...

    华东政法大学教学管理信息系统登录入口.学生期末考试成绩查询网上选课查分 学院教务系统入口_华东政法大学教学管理信息系统 用户名: 密码: 验证码: ... https://jwxt.ecupl.edu ...

  8. 360 浏览器设置里安全设置里清除上网痕迹中没有“管理保存过的账号和密码”这个选项

    360浏览器设置里安全设置里清除上网痕迹中没有"管理保存过的账号和密码"这个选项 点击360浏览器右上角"管理"->"管理"里的&qu ...

  9. ADF BC bc4j.xcfg

    ADF BC bc4j.xcfg专贴 分类: 2008年前的老古董2007-04-28 12:13 1041人阅读 评论(0) 收藏 举报 importapplicationclassstring测试 ...

最新文章

  1. 晓庄学院计算机科学分数,2016南京晓庄学院艺术类专业录取分数线
  2. 使用camera_calibration对xtion pro live深度相机进行参数标定,rosdep install camera_calibration报错Rosdep cannot find
  3. swarm 本地管理远程_带有WildFly Swarm的远程JMS
  4. Java实现将日志信息存到TXT中
  5. ASP.NET工作笔记之一:图片上传预览及无刷新上传
  6. 光山二高2021高考成绩查询,光山县第二高级中学2019高考成绩和历年成绩汇总
  7. osgb转json_基于CAD平台的OSGB数据分级渲染的方法与流程
  8. 软考网络工程师学习笔记
  9. PS之人物中性灰磨皮(处理人脸部光影)
  10. 影响世界的100个经典管理定律
  11. 当前HNB资讯加热不燃烧产品与传统中烟加热卷烟有哪些区别?
  12. 一个简单的app爬虫:对近期热播剧《三十而已》进行知乎app关键词搜索
  13. Android Studio 往虚拟机添加音乐
  14. WinInet进阶:发送邮件
  15. java tpl文件_解决Layui tpl模板渲染文件上传不起作用
  16. java-jna 怪物遍历涉及到的二叉树
  17. 【Java】int a = 2; 输出 a+++1 的结果是多少? 以及输出之后a的值是多少?
  18. scikit-learn:逻辑回归
  19. iOS 开发者证书、描述文件等详解
  20. 树莓派+4G模块接收短信实时转发到邮箱

热门文章

  1. P2480-[SDOI2010]古代猪文【中国剩余定理,Lucas定理】
  2. P3387-【模板】缩点【tarjan,强联通分量,DAGdp】
  3. HHKB Programming Contest 2020 总结
  4. 【LCT】遥远的国度(P3979)
  5. 业务库负载翻了百倍,我做了什么来拯救MySQL架构
  6. Java 调用EXE
  7. 【FTP】发布FTP服务器
  8. 老师 累了,我们 泪了!
  9. 你们好好的学,回头教教我~
  10. win10操作技巧介绍,很实用!