编程式式事务管理
1. 使用PlatformTransactionManager
2. 如果系统的几个地方都使用编程式事务管理, 使用事务的模板方式
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");
}
});
}
}