何為資料庫事務?
通俗來講,資料庫事務就是把一系列操作看成乙個整體,這個整體要麼執行成功,要麼因為種種原因,徹底執行失敗,也就是這個整體中的任何乙個操作都沒有執行。(要麼全部成功,要麼全部失敗)。
應用場景
經典例子:
甲方給乙方轉賬1000元,甲的賬戶先減去1000元,乙的賬戶再增加1000元。但是如果因為某種原因,使甲賬戶減去1000後,乙的賬戶增加1000元這個操作執行失敗,這個時候就不能讓甲的餘額減去1000,因為甲乙的賬戶餘額是乙個整體,一榮俱榮,一損俱損。這時候就要讓對甲的操作回滾(rollback)。
jdbc事務處理
資料一旦提交就不能回滾。
資料何時提交:
1.資料庫每次連線關閉時自動提交。
2.資料庫連線物件建立成功時預設自動提交:一條sql語句執行完之後會預設自動提交。
要允許資料庫回滾,就必須滿足:
1.乙個事務下的多個操作要在乙個資料庫連線之下完成
2.設定資料庫連線物件禁止自動提交
conn.
setautocommit
(fasle)
;
3.在乙個事務的所有操作完成後再手動commit
4.當事務其中的乙個操作失敗後,立馬rollback()
**如下:
public
void
testjdbctransaction()
catch
(exception e)
catch
(sqlexception e1)
}finally
catch
(sqlexception e)
//7.關閉連線
jdbcutils.
closeresource
(conn, null, null);}
}
其中的update方法為
//使用事務以後的通用的增刪改操作(version 2.0)
public
void
update
(connection conn ,string sql, object.
.. args)
// 3.執行sql語句
ps.execute()
;}catch
(exception e)
finally
}
需要注意,update方法中的connection用的是外界傳遞進來的引數,這也就保證了幾個操作共用了乙個連線物件。
事務的acid屬性
a :atomiticy(原子性) 原子在曾經被認作是世界上最小不可分割的物質。因此這裡表示的意思就是事務是最小的處理單元,不可以再被分割,內部的一切操作應該被視為乙個整體。
c :consistentcy(一致性) 事務必須從乙個一致性狀態變為另乙個一致性狀態。如果乙個事務作為原子從乙個一致的資料庫開始執行,則在事務執行結束時,資料庫和原來的資料庫是一致的。一致的,但並不是相同的,比如轉賬這個過程中,甲賬戶少了1000元錢,乙賬戶就要多1000元錢,這個過程中賬戶餘額總和是一致的。
i :isolation(隔離性) 乙個事務的執行不能被其他事務干擾,即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。也就是後面會提到的資料庫的併發問題。
d :durability(永續性) 永續性是指,乙個事務一旦提交,對資料庫的影響是永續性的,不可改變的。
資料庫事務
事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...
資料庫 事務
資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...
資料庫事務
這段時間面試,由於基礎不是特別好,遇到一些要筆試的公司。就會表示出來 今天有人問我,資料庫事務 是什麼。我只感覺十分熟悉。但是又說不出所以然。回來找了一下,現在整理記錄 1 定義 資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務...