亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transactionmanager.java

?? 本套系統采用了業界當前最為流行的beanAction組件
?? JAVA
字號:
/*
 *  Copyright 2004 Clinton Begin
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.ibatis.sqlmap.engine.transaction;

import com.ibatis.common.util.Throttle;
import com.ibatis.sqlmap.engine.scope.SessionScope;

import javax.sql.DataSource;
import java.sql.SQLException;

public class TransactionManager {

  private TransactionConfig transactionConfig;

  private boolean forceCommit;

  private Throttle txThrottle;

  public TransactionManager(TransactionConfig transactionConfig) {
    this.transactionConfig = transactionConfig;
    this.txThrottle = new Throttle(transactionConfig.getMaximumConcurrentTransactions());
  }


  public void begin(SessionScope session) throws SQLException, TransactionException {
    begin(session, IsolationLevel.UNSET_ISOLATION_LEVEL);
  }

  public void begin(SessionScope session, int transactionIsolation) throws SQLException, TransactionException {
    Transaction trans = session.getTransaction();
    TransactionState state = session.getTransactionState();
    if (state == TransactionState.STATE_STARTED) {
      throw new TransactionException("TransactionManager could not start a new transaction.  " +
          "A transaction is already started.");
    } else if (state == TransactionState.STATE_USER_PROVIDED) {
      throw new TransactionException("TransactionManager could not start a new transaction.  " +
          "A user provided connection is currently being used by this session.  " +
          "The calling .setUserConnection (null) will clear the user provided transaction.");
    }

    txThrottle.increment();

    try {
      trans = transactionConfig.newTransaction(transactionIsolation);
      session.setCommitRequired(false);
    } catch (SQLException e) {
      txThrottle.decrement();
      throw e;
    } catch (TransactionException e) {
      txThrottle.decrement();
      throw e;
    }

    session.setTransaction(trans);
    session.setTransactionState(TransactionState.STATE_STARTED);
  }

  public void commit(SessionScope session) throws SQLException, TransactionException {
    Transaction trans = session.getTransaction();
    TransactionState state = session.getTransactionState();
    if (state == TransactionState.STATE_USER_PROVIDED) {
      throw new TransactionException("TransactionManager could not commit.  " +
          "A user provided connection is currently being used by this session.  " +
          "You must call the commit() method of the Connection directly.  " +
          "The calling .setUserConnection (null) will clear the user provided transaction.");
    } else if (state != TransactionState.STATE_STARTED && state != TransactionState.STATE_COMMITTED ) {
      throw new TransactionException("TransactionManager could not commit.  No transaction is started.");
    }
    if (session.isCommitRequired() || forceCommit) {
      trans.commit();
      session.setCommitRequired(false);
    }
    session.setTransactionState(TransactionState.STATE_COMMITTED);
  }

  public void end(SessionScope session) throws SQLException, TransactionException {
    Transaction trans = session.getTransaction();
    TransactionState state = session.getTransactionState();

    if (state == TransactionState.STATE_USER_PROVIDED) {
      throw new TransactionException("TransactionManager could not end this transaction.  " +
          "A user provided connection is currently being used by this session.  " +
          "You must call the rollback() method of the Connection directly.  " +
          "The calling .setUserConnection (null) will clear the user provided transaction.");
    }

    try {
      if (trans != null) {
        try {
          if (state != TransactionState.STATE_COMMITTED) {
            if (session.isCommitRequired() || forceCommit) {
              trans.rollback();
              session.setCommitRequired(false);
            }
          }
        } finally {
          session.closePreparedStatements();
          trans.close();
        }
      }
    } finally {

      if (state != TransactionState.STATE_ENDED) {
        txThrottle.decrement();
      }

      session.setTransaction(null);
      session.setTransactionState(TransactionState.STATE_ENDED);
    }
  }

  public DataSource getDataSource() {
    return transactionConfig.getDataSource();
  }

  public void setDataSource(DataSource ds) {
    transactionConfig.setDataSource(ds);
  }

  public boolean isForceCommit() {
    return forceCommit;
  }

  public void setForceCommit(boolean forceCommit) {
    this.forceCommit = forceCommit;
  }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月天一区二区| 加勒比av一区二区| 久久五月婷婷丁香社区| 一本大道av一区二区在线播放| 亚洲一区二区三区四区在线观看 | 亚洲色大成网站www久久九九| 欧美精品第一页| 99re成人在线| 国产精品影音先锋| 首页国产丝袜综合| 亚洲欧美另类小说| 国产欧美日韩不卡| 精品国产免费一区二区三区四区| 日本精品裸体写真集在线观看 | 欧美日韩在线免费视频| 国产高清在线精品| 久久99久久精品欧美| 亚洲一级二级在线| 亚洲美女屁股眼交3| 免费在线观看一区二区三区| 国产精品动漫网站| 久久精品视频网| 欧美电影免费观看高清完整版在线 | 久久免费视频一区| 4438x成人网最大色成网站| 色诱亚洲精品久久久久久| 日韩欧美国产三级| 在线综合+亚洲+欧美中文字幕| 色综合天天综合狠狠| 国产91对白在线观看九色| 紧缚捆绑精品一区二区| 人人狠狠综合久久亚洲| 日韩av一区二区三区| 午夜欧美一区二区三区在线播放| 亚洲午夜在线视频| 亚洲成人免费看| 一区二区三区四区视频精品免费| 成人欧美一区二区三区1314| 欧美国产精品中文字幕| 亚洲国产精品成人久久综合一区| 久久久亚洲综合| 久久精品视频在线免费观看| 国产日韩av一区| 欧美韩国日本不卡| 中文字幕日韩精品一区| 国产精品少妇自拍| 亚洲人成亚洲人成在线观看图片 | 奇米一区二区三区av| 天堂va蜜桃一区二区三区| 亚洲成av人片一区二区梦乃| 亚洲成av人片一区二区| 美女视频免费一区| 九九视频精品免费| 国产精品18久久久| av一区二区不卡| 色综合天天天天做夜夜夜夜做| 欧美性色黄大片| 欧美一区二区三区白人| 久久夜色精品国产欧美乱极品| 久久久久久久久久久久久女国产乱| 久久蜜桃香蕉精品一区二区三区| 欧美激情在线免费观看| 亚洲精品高清在线观看| 五月婷婷激情综合| 激情文学综合丁香| 91亚洲精华国产精华精华液| 91久久免费观看| 日韩你懂的在线播放| ww久久中文字幕| 中文字幕一区二区在线观看| 亚洲一区二区在线观看视频 | 国产性做久久久久久| 亚洲欧美乱综合| 日本不卡1234视频| 国产v日产∨综合v精品视频| 色94色欧美sute亚洲线路一久| 欧美一级xxx| 国产精品久久久久aaaa| 亚洲午夜电影网| 国产综合成人久久大片91| 成人免费的视频| 欧美日韩国产美| 欧美激情在线一区二区| 亚洲国产一区二区视频| 国内精品伊人久久久久影院对白| 99麻豆久久久国产精品免费| 欧美日韩综合一区| 日本一区二区三区高清不卡| 亚洲va欧美va人人爽| 国产乱码精品一区二区三区五月婷| 91精彩视频在线观看| 日韩欧美精品在线视频| 亚洲精品免费看| 国产综合久久久久久鬼色| 欧洲精品在线观看| 久久久久久久久久久黄色| 亚洲国产视频网站| 9人人澡人人爽人人精品| 欧美一二区视频| 亚洲人成伊人成综合网小说| 国产精品一色哟哟哟| 亚洲精品成a人| 一区二区三区在线播放| 91一区在线观看| 精品国一区二区三区| 亚洲人妖av一区二区| 精品一区二区三区视频在线观看 | 亚洲国产欧美在线人成| 懂色av一区二区三区免费看| 日韩欧美国产三级电影视频| 亚洲福利一二三区| 91老师片黄在线观看| 国产欧美日韩三区| 国产制服丝袜一区| 欧美一区二区视频免费观看| 夜夜亚洲天天久久| 99久久免费精品高清特色大片| 久久久久97国产精华液好用吗| 日韩—二三区免费观看av| 欧美亚洲综合另类| 亚洲精品免费一二三区| 99精品国产视频| 中文字幕精品—区二区四季| 国产在线国偷精品产拍免费yy| 欧美一区二区三区爱爱| 天堂va蜜桃一区二区三区 | 色偷偷一区二区三区| 国产欧美一区二区在线观看| 国内一区二区视频| 亚洲精品一线二线三线| 免费在线观看一区| 日韩欧美在线不卡| 日韩电影免费在线看| 欧美精品国产精品| 日韩高清中文字幕一区| 欧美一区二区三区性视频| 天堂蜜桃一区二区三区| 欧美乱妇一区二区三区不卡视频| 亚洲成人激情av| 欧美一区二区在线播放| 免播放器亚洲一区| 精品欧美一区二区在线观看| 美女脱光内衣内裤视频久久网站| 91精品国产色综合久久| 久久爱另类一区二区小说| 久久蜜桃av一区精品变态类天堂 | 亚洲综合视频网| 欧美日韩一区二区三区在线看| 亚洲国产wwwccc36天堂| 欧美视频第二页| 香蕉乱码成人久久天堂爱免费| 欧美视频在线观看一区| 亚洲成a人v欧美综合天堂| 在线成人av网站| 六月丁香综合在线视频| 国产丝袜在线精品| 成人av电影观看| 有坂深雪av一区二区精品| 在线精品视频一区二区| 亚洲成人av在线电影| 日韩女优av电影| 高清成人在线观看| 一区二区三区欧美日韩| 欧美精品乱码久久久久久| 激情五月婷婷综合网| 亚洲视频每日更新| 欧美一区二区人人喊爽| 国产美女娇喘av呻吟久久| 亚洲视频在线观看三级| 精品视频一区二区不卡| 精品午夜久久福利影院| 国产精品萝li| 欧美三区在线视频| 精品一区二区综合| 国产精品久久久久精k8| 欧美日韩高清在线| 国产精品91一区二区| 亚洲人成网站在线| 91精品国产色综合久久久蜜香臀| 成人性生交大片免费看中文| 亚洲中国最大av网站| 精品少妇一区二区三区日产乱码 | 色噜噜狠狠成人网p站| 午夜精品久久一牛影视| 欧美极品美女视频| 在线不卡中文字幕| 91色在线porny| 久久av中文字幕片| 一区二区三区四区不卡在线| 日韩精品在线看片z| 91一区二区在线观看| 蜜桃一区二区三区在线观看| 亚洲欧美综合色| 日韩视频国产视频| 日本韩国精品在线| 高清av一区二区| 日韩精品福利网| 一区二区三区产品免费精品久久75| 欧美成人在线直播| 欧美日韩精品一区二区三区四区|