日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Spring事務(wù)之七(事務(wù)自動提交)

 quasiceo 2018-09-08

一、MySQL數(shù)據(jù)庫事務(wù)自動提交    

對于mysql數(shù)據(jù)庫,默認(rèn)情況下,數(shù)據(jù)庫處于自動提交模式。每一條語句處于一個單獨的事務(wù)中,在這條語句執(zhí)行完畢時,如果執(zhí)行成功則隱式的提交事務(wù),如果執(zhí)行失敗則隱式的回滾事務(wù)。對于正常的事務(wù)管理,是一組相關(guān)的操作處于一個事務(wù)之中,因此必須關(guān)閉數(shù)據(jù)庫的自動提交模式,下面是查看方式:

        查看是否自動提交命令(ON表示開啟自動提交,值為1,OFF表示關(guān)閉自動提交,值為0):

show variables like 'autocommit';

      關(guān)閉自動提交后,則用戶將一直處于某個事務(wù)中,直到執(zhí)行一條commit提交或rollback語句才會結(jié)束當(dāng)前事務(wù)重新開始一個新的事務(wù)。

二、Spring連接

  如果結(jié)合Spring來獲取數(shù)據(jù)庫連接,就不用擔(dān)心,spring會將底層連接的自動提交特性設(shè)置為false,先看下Spring事務(wù)配置:

  1. <!-- 配置事務(wù) -->
  2. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  3. <property name="dataSource" ref="dataSource" />
  4. </bean>
  5. <tx:annotation-driven transaction-manager="transactionManager"/>

上面配置中,重要的是類:org.springframework.jdbc.datasource.DataSourceTransactionManager,看其對自動提交的處理:

  1. protected void doBegin(Object transaction, TransactionDefinition definition) {

  2. //......

  3. if(con.getAutoCommit()) {
  4. txObject.setMustRestoreAutoCommit(true);
  5. if(this.logger.isDebugEnabled()) {
  6. this.logger.debug("Switching JDBC Connection [" + con + "] to manual commit");
  7. }
  8. con.setAutoCommit(false);
  9. }

  10. //......

  11. }

三、建議:當(dāng)一個連接關(guān)閉時,如果有未提交的事務(wù)則回滾任何未提交的事務(wù)(C3P0默認(rèn)的策略,C3P0的autoCommitOnClose屬性默認(rèn)是false)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多