使用ADF BC管理保存点
在使用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);}}
请注意, passivateStateForUndo和activateStateForUndo方法仅在AM状态管理方面与保存点一起使用,而实际上与数据库中的事务保存点无关。 activateStateForUndo方法会在数据库中执行真正的回滚 ,但是直到通过passivateStateForUndo方法拍摄快照时,AM状态(包括脏实体缓存)都将被还原。
而已!
翻译自: https://www.javacodegeeks.com/2015/01/managing-savepoints-with-adf-bc.html
使用ADF BC管理保存点相关推荐
- adf4351_使用ADF BC管理保存点
adf4351 在使用ADF BC时,我们通常依赖于在数据库中执行DML操作的框架. 该框架在DBTransaction提交周期内正确地在数据库中进行了所有必要的更新. 很酷的事情是,在这种情况下,数 ...
- adf4351使用_使用ADF BC管理保存点
adf4351使用 在使用ADF BC时,我们通常依赖于在数据库中执行DML操作的框架. 该框架在DBTransaction提交周期内正确地在数据库中进行了所有必要的更新. 很酷的事情是,在这种情况下 ...
- ADF BC:创建绑定到业务组件的UI表
在此示例中,我们将展示如何创建绑定到业务组件的简单UI表(af:table). 我再次尝试使用简单的标准在网上进行搜索: "如何创建绑定到业务组件ADF 11g的af:table" ...
- 网站输入正确账号密码页面刷新一下_Folx的密码管理保存网站登陆信息
Folx的密码管理保存网站登陆信息 大家下载某个文件时,需要登录文件所在的网站才能进行下载,否则哪怕有下载链接也无权限进行文件下载,那Folx遇到这种情况是否就无法使用了呢?Folx的密码管理也能保存 ...
- 360 浏览器设置里安全设置里清除上网痕迹中没有“管理保存过的账号和密码”这个选项
360浏览器设置里安全设置里清除上网痕迹中没有"管理保存过的账号和密码"这个选项 点击360浏览器右上角"管理"->"管理"里的&qu ...
- ADF BC bc4j.xcfg
ADF BC bc4j.xcfg专贴 分类: 2008年前的老古董2007-04-28 12:13 1041人阅读 评论(0) 收藏 举报 importapplicationclassstring测试 ...
- 计算机管理里面的用户名是否可以导出,360浏览器管理保存过的账号和密码步骤教程...
许多360浏览器的用户在注册网站账号的时候,都会被360浏览器提醒安全保存该账号和密码,一般用户也会选择安全保存.但是,如果一个网站注册了多个账号,或者当时360浏览器管理保存过的账号和密码是错误的或 ...
- python宿舍管理保存_学生宿舍管理信息系统详细报告
学生宿舍管理信息系统详细报告 目 录 第一章 前言--------------------------------------------------------4 1.1 MIS概述-------- ...
- chrome 保存密码_如何在Chrome中管理保存的密码
chrome 保存密码 Google Chrome comes with a handy password manager already built in. You can have your br ...
最新文章
- vue数据源转json问题
- java命令行编译时提示找不到或无法加载主类的问题
- 这个结构体排序开始没有想到!!
- Hive的两种操作模式
- Python 标准库 18.5 - asyncio
- 微型计算机系统包括( )几部分,微型计算机系统包括哪几个部分?
- java 菜单 分隔符_在Java中使用分隔符连接值列表最优雅的方法是什么?
- CDH 6.x 安装 Phoenix 服务
- MyEclipse—如何在MyEclipse中创建servlet3.0
- 前端第二天 表格/表单和H5
- 2018年4月自考感想
- 2 数据可视化大屏 - 布局
- 【期末复习】现代管理科学基础
- 台式机鼠标失灵打开计算机,终于懂了台式电脑鼠标键盘不能用怎么办了
- 激光清洗的优点和实际案例
- 期货与期权的主要区别与联系?
- “宅一族”大数据报告:喜欢学习,喜欢健身,生活同样很精彩
- 大容量U盘制作USB多重系统启动盘初探
- 集成流程安全报警功能迁移心得
- Android studio使用.9图片报错
热门文章
- 使用Servlet上传多张图片——访问提示
- jQuery 操作元素
- 2015蓝桥杯省赛---java---A---8(移动距离)
- java oschina_简单说说 OSChina 的技术架构
- windows mysql memcached_Memcached在Windows下的安装
- apache shiro怎么升级_Springboot整合Shiro之授权
- jakarta ee_Jakarta EE贡献–入门
- java线程池返回线程状态_Java线程的不同状态
- Neo4j导入:java.lang.IllegalStateException:不支持在单个导入中混合指定和未指定的组所有物...
- tls 使用java生成_同时使用传入和传出连接时,相互TLS身份验证存在Java问题