spring 编程式事务

	PlatformTransactionManager txManager = new DataSourceTransactionManager(PersistModule.getDataSource());
		DefaultTransactionDefinition def = new DefaultTransactionDefinition();  
	    def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);  
	    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);  
	    TransactionStatus status = txManager.getTransaction(def); 
	  
	    StateLike result = null;
	    try {  
		    	completeState(currentState);
		    	result =run0(currentState);
		    	if(result != null){
		    		initNextState(result);
		    	}else{
		    		//流程结束,state位置成 complete
		    		updateProcessCurrentStatus(innerbizId,StateConstant.STATE_COMPLETE);//update  process table
		    	}
		    	
	           txManager.commit(status);
	    } catch (RuntimeException e) {  
	    		e.printStackTrace();
	        txManager.rollback(status);  
	    } catch (Throwable e) {
	    	
			e.printStackTrace();
		}  
	    
	    return  result;



第二种:模板模式

		 TransactionTemplate transactionTemplate = TemplateUtils.getTransactionTemplate();  
		 @SuppressWarnings("unchecked")
		 StateLike r = transactionTemplate.execute(new TransactionCallback() {  
	            public Object doInTransaction(TransactionStatus status) {  
	            	StateLike result = null;
	                try {  
		                	completeState(currentState);
			    		    	result =run0(currentState);
			    		    	if(result != null){
			    		    		initNextState(result);
			    		    	}else{
			    		    		//流程结束,state位置成 complete
			    		    		updateProcessCurrentStatus(innerbizId,StateConstant.STATE_COMPLETE);//update  process table
			    		    	}
	                		
			    		    	//NPE
//			    		    	Map m= null;
//			    		    	m.put("1", "1");
	                } catch (Throwable e) {  
	                    status.setRollbackOnly();  
	                    e.printStackTrace();  
	                }  
	                return result;  
	            }


	        });
		return r; 


其中

TemplateUtils为:::

public class TemplateUtils {
		private static Logger logger = Logger.getLogger(TemplateUtils.class);
		private static DataSource dataSource = null;
		private static PlatformTransactionManager platformTransactionManager = null;
		static {
			try {
				if(dataSource == null){
					dataSource = PersistModule.getDataSource();
				}
				
			} catch (Exception e) {
				logger.info("find PersistModule DataSource error···", e);
			}
		}

		public static TransactionTemplate getTransactionTemplate() {
			PlatformTransactionManager txManager = new DataSourceTransactionManager(
					dataSource);
			return new TransactionTemplate(txManager);
		}

		public static JdbcTemplate getJdbcTemplate() {
			return new JdbcTemplate(dataSource);
		}

		public static NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
			return new NamedParameterJdbcTemplate(dataSource);
		}

		public static SimpleJdbcTemplate getSimpleJdbcTemplate() {
			return new SimpleJdbcTemplate(dataSource);
		}

}











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值