理解Spring事務管理

理解事務以前,先講一個你平常生活中最常乾的事:取錢。ide

好比你去ATM機取1000塊錢,大致有兩個步驟:首先輸入密碼金額,銀行卡扣掉1000元錢;而後ATM出1000元錢。事務

這兩個步驟必須是要麼都執行要麼都不執行。ci

若是銀行卡扣除了1000塊可是ATM出錢失敗的話,你將會損失1000元;開發

若是銀行卡扣錢失敗可是ATM卻出了1000塊,那麼銀行將損失1000元。it

因此,若是一個步驟成功另外一個步驟失敗對雙方都不是好事,若是無論哪個步驟失敗了之後,整個取錢過程都能回滾,也就是徹底取消全部操做的話,這對雙方都是極好的。io

事務就是用來解決相似問題的。事務是一系列的動做,它們綜合在一塊兒纔是一個完整的工做單元,這些動做必須所有完成,若是有一個失敗的話,那麼事務就會回滾到最開始的狀態,彷彿什麼都沒發生過同樣。class

在企業級應用程序開發中,事務管理必不可少的技術,用來確保數據的完整性和一致性。程序

事務有四個特性:ACID密碼

原子性(Atomicity):事務是一個原子操做,由一系列動做組成。事務的原子性確保動做要麼所有完成,要麼徹底不起做用。
一致性(Consistency):一旦事務完成(無論成功仍是失敗),系統必須確保它所建模的業務處於一致的狀態,而不會是部分完成部分失敗。在現實中的數據不該該被破壞。
隔離性(Isolation):可能有許多事務會同時處理相同的數據,所以每一個事務都應該與其餘事務隔離開來,防止數據損壞。
持久性(Durability):一旦事務完成,不管發生什麼系統錯誤,它的結果都不該該受到影響,這樣就能從任何系統崩潰中恢復過來。一般狀況下,事務的結果被寫到持久化存儲器中。技術

相關文章
相關標籤/搜索