一、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語句已經執行了.這讓我糾結了一下午,仔細的檢查了配置檔案,發現明明已經配置了...