真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Spring對事務(wù)的管理和支持

這篇文章主要介紹“Spring對事務(wù)的管理和支持”,在日常操作中,相信很多人在Spring對事務(wù)的管理和支持問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Spring對事務(wù)的管理和支持”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),虎丘企業(yè)網(wǎng)站建設(shè),虎丘品牌網(wǎng)站建設(shè),網(wǎng)站定制,虎丘網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,虎丘網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

spring事務(wù)管理的好處是聲明式事務(wù)管理,也就是說可以通過IOC配置中指定邊界和事務(wù)屬性,這樣spring會自動在指定的事務(wù)邊界上應(yīng)用事務(wù)屬性。

在spring的事務(wù)管理中,主要有3個接口,他們分別是:PlatformTransactionManager、TransactionDefinition、TransactionStatus。他們3個具體的關(guān)聯(lián)關(guān)系如下:

下面我們詳細(xì)了解一下上面3個接口的具體作用。

TransactionDefinition:用戶描述事務(wù)的隔離級別、超時時間、是否為只讀事務(wù)和事務(wù)傳播規(guī)則等控制事務(wù)具體行為的事務(wù)屬性。PlatformTransactionManager根據(jù)TransactionDefinition提供的事務(wù)屬性配置信息創(chuàng)建事務(wù),并用TransactionStatus描述這個事務(wù)的激活事務(wù)的狀態(tài)。在上面我們介紹過TransactionDefinition用來描述事務(wù)的相關(guān)屬性,那么下面我們具體看一下在TransactionDefinition中都包括哪些事務(wù)屬性。

  • 事務(wù)隔離:當(dāng)前事務(wù)和其它事務(wù)的隔離程度。在TransactionDefinition中定義了和java.sql.Connection接口中一樣的隔離級別:ISOLATION_READ_UNCOMMITTED、ISOLATION_READ_COMMITTED、ISOLATION_REPEATABLE_READ、ISOLATION_SERIALIZABLE。上面介紹的這些常量正好對應(yīng)在其它文章中提到過的數(shù)據(jù)庫的隔離級別。除此之外TransactionDefinition還包括默認(rèn)的隔離級別ISOLATION_DEFAULT。它表示使用底層數(shù)據(jù)庫的默認(rèn)隔離級別。

  • 事務(wù)傳播:在正常的情況下事務(wù)中執(zhí)行的所有代碼都會在一個事務(wù)中運行,但spring為我們提供了幾種可選的事務(wù)傳播類型:簡單的參與到現(xiàn)有的事務(wù)中、或者掛起當(dāng)前事務(wù)、或者創(chuàng)建一個新的事務(wù)。

  • 事務(wù)超時:事務(wù)在超時前能運行多久,超過時間后,事務(wù)將回滾。

  • 只讀狀態(tài):因為只讀事務(wù)不修改任何數(shù)據(jù),所以在有只讀操作時可以對只讀事務(wù)做優(yōu)化處理,提高運行性能。

TransactionStatus:TransactionStatus表示的是事務(wù)的具體運行狀態(tài)。也就是通過TransactionStatus可以獲取到事務(wù)運行期的狀態(tài)信息,也可以通過該接口間接的回滾事務(wù)。這是因為該接口繼承了SavepointManager,而SavepointManager接口又支持JDBC3.0中新增的保存點的分段事務(wù)控制能力。下面我們簡單了解一下SavepointManager中所包括的方法。

  • Object createSavepoint():創(chuàng)建一個保存點對象,以保證事務(wù)可以支持回滾到保存點上,也可以調(diào)用releaseSavepoint()方法釋放一個已經(jīng)確定不用的保存點。

  • void rollbackToSavepoint(Object var1):將事務(wù)回滾到特定的保存點上,被回滾的保存點將自動釋放。

  • void releaseSavepoint(Object var1):釋放一個保存點,如果事務(wù)提交,那么所有的保存點都將釋放。

除了上述已有的方法外,TransactionStatus還擴展了以下SavepointManager中沒有的方法:

  • boolean hasSavepoint():判斷當(dāng)前事務(wù)是否創(chuàng)建了保存點。

  • boolean isNewTransaction():判斷當(dāng)前事務(wù)是否是一個新的事務(wù),如果返回false則表示當(dāng)前事務(wù)是一個已經(jīng)存在的事務(wù),或者當(dāng)前操作未運行在事務(wù)環(huán)境中。

  • boolean isCompleted():判斷當(dāng)前事務(wù)是否已經(jīng)結(jié)束,已經(jīng)提交事務(wù)或者事務(wù)回滾都任務(wù)當(dāng)前事務(wù)已經(jīng)結(jié)束。

  • boolean isRollbackOnly():判斷當(dāng)前事務(wù)是否已經(jīng)被標(biāo)識為rollback-only。

  • void setRollbackOnly():將當(dāng)前事務(wù)設(shè)置為rollback-only。通過該標(biāo)識spring將此事務(wù)回滾。

PlatformTransactionManager:在其它的文章中使我們知道JDBC的事務(wù)只能提交或者回滾。在spring中PlatformTransactionManager的作用就是做上述功能的。下面我們看一下PlatformTransactionManager中的所涉及到的方法及其作用。

  • TransactionStatus getTransaction(TransactionDefinition var1):該方法根據(jù)事務(wù)定義的信息從事務(wù)環(huán)境中返回一個已存在的事務(wù),或者創(chuàng)建一個新的事務(wù),并用TransactionStatus記錄這個事務(wù)的運行狀態(tài)。

  • void commit(TransactionStatus var1):根據(jù)事務(wù)的狀態(tài)提交事務(wù),如果事務(wù)已經(jīng)被標(biāo)識為rollback-only,則該方法將執(zhí)行回滾操作。

  • void rollback(TransactionStatus var1):將事務(wù)回滾,如果調(diào)用commit()方法拋出一異常時,則spring會默認(rèn)調(diào)用rollback()方法。

上面我們介紹了spring中有關(guān)事務(wù)的主要接口,下面我們繼續(xù)了解一下,在spring中這些接口的具體實現(xiàn),實際上spring為不同的持久化技術(shù)都提供了不同的實現(xiàn),相關(guān)的實現(xiàn)類如下:

spring就是通過這此實現(xiàn)類進(jìn)而實現(xiàn)spring對事務(wù)的管理的,介紹了這么多,我們來看一下在spring中到底怎么用代碼的方式也就是聲明式事務(wù)管理。

Spring對事務(wù)的管理和支持

Spring對事務(wù)的管理和支持

Spring對事務(wù)的管理和支持

這樣我們的數(shù)據(jù)源就支持事務(wù)管理了。

到此,關(guān)于“Spring對事務(wù)的管理和支持”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享文章:Spring對事務(wù)的管理和支持
文章出自:http://weahome.cn/article/pcesci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部