Spring事務 之 事務自動提交

2021-08-04 15:58:04 字數 870 閱讀 5792

一、mysql

資料庫事務自動提交    

對於mysql資料庫,預設情況下,資料庫處於自動提交模式。每一條語句處於乙個單獨的事務中,在這條語句執行完畢時,如果執行成功則隱式的提交事務,如果執行失敗則隱式的回滾事務。對於正常的事務管理,是一組相關的操作處於乙個事務之中,因此必須關閉資料庫的自動提交模式,下面是檢視方式:

檢視是否自動提交命令(on表示開啟自動提交,值為1,off表示關閉自動提交,值為0):

show variables like'autocommit';

關閉自動提交後,則使用者將一直處於某個事務中,直到執行一條commit提交或rollback語句才會結束當前事務重新開始乙個新的事務。

二、spring連線

如果結合spring來獲取資料庫連線,就不用擔心,spring會將底層連線的自動提交特性設定為false,先看下spring事務配置:

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

protected void dobegin(object transaction, transactiondefinition definition)   

con.setautocommit(false);

} //......

}

三、建議:當乙個連線關閉時,如果有未提交的事務則回滾任何未提交的事務(c3p0預設的策略,c3p0的autocommitonclose屬性預設是false)

Spring之事務管理

spring事務管理高層抽象主要包括3個介面 1.platformtransactionmanager 事務管理器 實現類 datasourcetransactionmanager 使用spring jdbc或ibatis進行持久化資料時使用 實現類 hibernatetransactionmana...

spring之事務管理

spring對事務的管理,有兩種方式,分別是程式設計式事務和宣告式事務,常用的是宣告式的事務,採用宣告式的事務包括配置檔案的方式和註解的配置方式 1採用配置檔案的方式 1.1類 public class user public class userdao 增加錢 public void addmon...

spring事務提交問題

在做網盤的時候,遇到了乙個奇怪的問題,雖然檔案上傳到了hdfs,但是在把檔案資訊儲存到資料庫時,卻遇到了乙個奇怪的問題,那就是明明方法已經成功執行,但是資料庫卻沒有資料,然後根據後台的sql的列印結果顯示,明明那個inset語句已經執行了.這讓我糾結了一下午,仔細的檢查了配置檔案,發現明明已經配置了...