事務模板接入 spring的程式設計式事務
事務模板接入
這裡接入的是spring的程式設計式事務,代理一下spring的TransactionTemplate就可以了。
import org.springframework.transaction.TransactionException;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
/**
* 事務模板
*
* @author jiacheng.yjc
* @version $Id: TranscationTemplate.java, v 0.1 2015年11月18日 上午11:17:58 jiacheng.yjc Exp $
*/
public class TrancTemplateImpl implements TrancTemplate {
private TransactionTemplate transactionTemplate;
//這個是為了一個事務不夠的時候也不用再new一個,直接用這個就行
private TransactionTemplate transactionNewTemplate;
/**
*
* @see com.mybank.bkloanapply.core.service.component.tx.TrancTemplate#execute(org.springframework.transaction.support.TransactionCallback)
*/
@Override
public <T> T execute(TransactionCallback<T> action) throws TransactionException {
return transactionTemplate.execute(action);
}
/**
*
* @see com.mybank.bkloanapply.core.service.component.tx.TrancTemplate#executeReqNew(org.springframework.transaction.support.TransactionCallback)
*/
@Override
public <T> T executeReqNew(TransactionCallback<T> action) throws TransactionException {
return transactionNewTemplate.execute(action);
}
/**
* Setter method for property <tt>transactionTemplate</tt>.
*
* @param transactionTemplate value to be assigned to property transactionTemplate
*/
public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
this.transactionTemplate = transactionTemplate;
}
/**
* Setter method for property <tt>transactionNewTemplate</tt>.
*
* @param transactionNewTemplate value to be assigned to property transactionNewTemplate
*/
public void setTransactionNewTemplate(TransactionTemplate transactionNewTemplate) {
this.transactionNewTemplate = transactionNewTemplate;
}
}
模板的接入使用
/**
* 測試用例,插入一條日誌記錄
*
*/
@Override
public String logTest(LogModel logModel) {
final LogModel logModel_ = logModel;
trancTemplate.execute(new TransactionCallback<LogModel>() {
@Override
public LogModel doInTransaction(TransactionStatus status) {
logComponent.insert(logModel_);
//do otherthings…
return logModel_;
}
});
return "執行成功";
}
當insert語句執行出錯或者do otherthings時出錯都會自動回滾,不需要手動trycatch然後status.setRollbackOnly();回滾,很方便。
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://www.cnblogs.com/captainbed