在Oracle Fusion Web应用开发中,如果采用Task Flow来进行应用流的控制,默认只要创建一个task flow就是一个新的事物开始,
如果在流中需要回滚,只需要添加一个restoreSavepoint活动就可以实现事物的回滚,但如果需要在程序中实现保存点的创建和回滚,使用下面的代码:
1、创建保存点
- DCBindingContainerbinding=ADFUtils.getDCBindingContainer();
- DCDataControldcDataControl=binding.getDataControl();
- Stringsph=(String)dcDataControl.createSavepoint();
- JSFUtils.setExpressionValue("#{pageFlowScope.AdfmSavePoint}",sph);
创建保存点时,ADF将AM中的对象实例序列化保存到PS_TXN表中,因此如果AM中包括了太多的对象,那创建保存点时就会有太多的信息保存到后台表,
意味着AM粒度的划分直接影响 到保存点的创建。关于相关的详细信息可以查看OTN的技术文章Overview of Temporary Tables Created By BC4J
2、恢复保存点
- Stringsph=(String)JSFUtils.resolveExpression("#{pageFlowScope.AdfmSavePoint}");
- DCBindingContainerbinding=ADFUtils.getDCBindingContainer();
- DCDataControldcDataControl=binding.getDataControl();
- dcDataControl.restoreSavepoint(sph);
[转]http://oracleseeker.com/2009/07/18/create_and_restore_savepoint_in_oracle_adf_application/