Spring Transaction 二: 编程式式事务管理

编程式式事务管理

1. 使用PlatformTransactionManager

import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;


public class Test4 {

	private PlatformTransactionManager transactionManager;
	
	public void setTransactionManager(PlatformTransactionManager stransactionManager){
		this.transactionManager=stransactionManager;
		
	}
	public void doUpdate() throws Throwable {
		// TODO Auto-generated method stub
		
		TransactionDefinition transactionDefinition=
			new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED);
		
		TransactionStatus transactionStatus=
			this.transactionManager.getTransaction(transactionDefinition);
		
		try{
			System.out.println("do some thing");
			this.transactionManager.commit(transactionStatus);
		}catch(Throwable t){
		    this.transactionManager.rollback(transactionStatus);
		    throw t;
		}
	}
}



2. 如果系统的几个地方都使用编程式事务管理, 使用事务的模板方式


import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionTemplate;


public class Test5 {
	
    private TransactionTemplate transactionTemplate;
	
	public void setTransactionManager(PlatformTransactionManager stransactionManager){
		this.transactionTemplate=new TransactionTemplate(stransactionManager);
		
	}
	public void doUpdate() throws Throwable {
		// TODO Auto-generated method stub
		
		this.transactionTemplate.execute(new TransactionCallbackWithoutResult(){
			protected void doInTransactionWithoutResult(TransactionStatus status){
				  System.out.println("do something");
			}
		});
		
	}

}


你可能感兴趣的:(spring,编程)