理解事務之前,先講一個你日常生活中最常干的事:取錢。
比如你去atm機取1000塊錢,大體有兩個步驟:首先輸入密碼金額,銀行卡扣掉1000元錢;然后atm出1000元錢。這兩個步驟必須是要么都執行要么都不執行。如果銀行卡扣除了1000塊但是atm出錢失敗的話,你將會損失1000元;如果銀行卡扣錢失敗但是atm卻出了1000塊,那么銀行將損失1000元。所以,如果一個步驟成功另一個步驟失敗對雙方都不是好事,如果不管哪一個步驟失敗了以后,整個取錢過程都能回滾,也就是完全取消所有操作的話,這對雙方都是極好的。
事務就是用來解決類似問題的。事務是一系列的動作,它們綜合在一起才是一個完整的工作單元,這些動作必須全部完成,如果有一個失敗的話,那么事務就會回滾到最開始的狀態,仿佛什么都沒發生過一樣。
在企業級應用程序開發中,事務管理必不可少的技術,用來確保數據的完整性和一致性。
在spring中編寫事務的方式,是使用spring的transactiontemplate。就想spring中的其他模板類一樣,transactiontemplate利用一種回調機制,讓用戶編寫需要在事務中編寫的代碼。
1
2
3
4
|
transactiontemplate.execute( new transactioncallback(){ public object dointransaction(transactionstatus ts){ } }); |
那么,這里的transactiontemplate是從哪里來的呢?它和transactionmanager是什么關系呢?
首先,這個transactiontemplate需要注入到業務bean中。
其次,transactiontemplate中有一個成員變量,是transactionmanager類型的,也需要自動注入一個transactionmanager。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
原文鏈接:https://blog.csdn.net/li_canhui/article/details/85635707