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