评论

收藏

[JSP] spring实现jdbctemplate添加事务支持示例

开发技术 开发技术 发布于:2021-10-23 18:19 | 阅读数:260 | 评论:0

public interface JdbcTemplate extends JdbcOperations {
public abstract void beginTranstaion();
public abstract void commit();
public abstract void rollback();
}
public class JdbcTemplateImpl extends org.springframework.jdbc.core.JdbcTemplate implements JdbcTemplate {
 private PlatformTransactionManager platformTransactionManager;
 private DefaultTransactionDefinition transactionDefinition;
 private ThreadLocal<TransactionStatus> transcationStatus = new ThreadLocal<TransactionStatus>();
 public void beginTranstaion() {
  TransactionStatus tmp = platformTransactionManager.getTransaction(transactionDefinition);
  transcationStatus.set(tmp);
 }
 public void commit() {
  TransactionStatus tmp = transcationStatus.get();
  if (tmp == null) {
   throw new RMSRuntimeException("no transcation");
  }
  platformTransactionManager.commit(tmp);
  transcationStatus.remove();
 }
 public void rollback() {
  TransactionStatus tmp = transcationStatus.get();
  if (tmp == null) {
   throw new RMSRuntimeException("no transcation");
  }
  platformTransactionManager.rollback(tmp);
  transcationStatus.remove();
 }
 @Override
 public void afterPropertiesSet() {
  super.afterPropertiesSet();
  transactionDefinition = new DefaultTransactionDefinition();
  transactionDefinition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
  transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
  platformTransactionManager = new DataSourceTransactionManager(getDataSource());
 }
 public PlatformTransactionManager getPlatformTransactionManager() {
  return platformTransactionManager;
 }
 public DefaultTransactionDefinition getTransactionDefinition() {
  return transactionDefinition;
 }
 public ThreadLocal<TransactionStatus> getTranscationStatus() {
  return transcationStatus;
 }
}
关注下面的标签,发现更多相似文章