Spring 事務(wù)隔離與事務(wù)傳播的詳解與對(duì)比
Spring 事務(wù)隔離與事務(wù)傳播的詳解與對(duì)比
Spring是SSH中的管理員,負(fù)責(zé)管理其它框架,協(xié)調(diào)各個(gè)部分的工作。今天一起學(xué)習(xí)一下Spring的事務(wù)管理。Spring的事務(wù)管理分為聲明式跟編程式。聲明式就是在Spring的配置文件中進(jìn)行相關(guān)配置;編程式就是用注解的方式寫到代碼里。
Spring配置文件中關(guān)于事務(wù)配置總是由三個(gè)組成部分,分別是DataSource、TransactionManager和代理機(jī)制這三部分,無論哪種配置方式,一般變化的只是代理機(jī)制這部分。 DataSource、 TransactionManager這兩部分只是會(huì)根據(jù)數(shù)據(jù)訪問方式有所變化,比如使用Hibernate進(jìn)行數(shù)據(jù)訪問時(shí),DataSource實(shí)際為 SessionFactory,TransactionManager的實(shí)現(xiàn)為HibernateTransactionManager。
spring的事務(wù)隔離級(jí)別
- ISOLATION_DEFAULT:使用數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別。
- ISOLATION_READ_UNCOMMITTED:允許讀取改變了的還未提交的數(shù)據(jù),可能導(dǎo)致臟讀、不可重復(fù)讀和幻讀。
- ISOLATION_READ COMMITTED:允許并發(fā)事務(wù)提交之后讀取,可以避免臟讀,可能導(dǎo)致重復(fù)讀和幻讀。
- ISOLATION_REPEATABLE_READ:對(duì)相同字段的多次讀取結(jié)果一致,可導(dǎo)致幻讀。
- ISOLATION_SERIALIZABLE:完全服從ACID的原則,確保不發(fā)生臟讀、不可重復(fù)讀和幻讀。
可以根據(jù)自己的系統(tǒng)對(duì)數(shù)據(jù)的要求采取適應(yīng)的隔離級(jí)別,因?yàn)楦綦x牽涉到鎖定數(shù)據(jù)庫(kù)中的記錄,對(duì)數(shù)據(jù)正性要求越嚴(yán)格,并發(fā)的性能也越差。
spring的事務(wù)傳播行為
- spring事務(wù)的傳播行為說的是當(dāng)一個(gè)方法調(diào)用另一個(gè)方法時(shí),事務(wù)該如何操作。
- PROPAGATION_MANDATORY:該方法必須運(yùn)行在一個(gè)事務(wù)中。如果當(dāng)前事務(wù)不存在則拋出異常。
- PROPAGATION_NESTED:如果當(dāng)前存在一個(gè)事務(wù),則該方法運(yùn)行在一個(gè)嵌套的事務(wù)中。被嵌套的事務(wù)可以從當(dāng)前事務(wù)中單獨(dú)的提交和回滾。如果當(dāng)前不存在事務(wù),則開始一個(gè)新的事務(wù)。各廠商對(duì)這種傳播行為的支持參差不齊,使用時(shí)需注意。
- PROPAGATION_NEVER:當(dāng)前方法不應(yīng)該運(yùn)行在一個(gè)事務(wù)中。如果當(dāng)前存在一個(gè)事務(wù),則拋出異常。
- PROPAGATION_NOT_SUPPORTED:當(dāng)前方法不應(yīng)該運(yùn)行在一個(gè)事務(wù)中。如果一個(gè)事務(wù)正在運(yùn)行,它將在該方法的運(yùn)行期間掛起。
- PROPAGATION_REQUIRED:該方法必須運(yùn)行在一個(gè)事務(wù)中。如果一個(gè)事務(wù)正在運(yùn)行,該方法將運(yùn)行在這個(gè)事務(wù)中。否則,就開始一個(gè)新的事務(wù)。
- PROPAGATION_REQUIRES_NEW:該方法必須運(yùn)行在自己的事務(wù)中。它將啟動(dòng)一個(gè)新的事務(wù)。如果一個(gè)現(xiàn)有的事務(wù)正在運(yùn)行,將在這個(gè)方法的運(yùn)行期間掛起。
- PROPAGATION_SUPPORTS:當(dāng)前方法不需要事務(wù)處理環(huán)境,但如果一個(gè)事務(wù)已經(jīng)在運(yùn)行的話,這個(gè)方法也可以在這個(gè)事務(wù)里運(yùn)行。
以上就是Spring 事務(wù)隔離與事務(wù)傳播的實(shí)例詳解,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
JSP實(shí)現(xiàn)從數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù)到Excel下載的方法
這篇文章主要介紹了JSP實(shí)現(xiàn)從數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù)到Excel下載的方法,涉及JSP操作excel文件導(dǎo)出的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-10-10純jsp實(shí)現(xiàn)的倒計(jì)時(shí)動(dòng)態(tài)顯示效果完整代碼
這篇文章主要介紹了純jsp實(shí)現(xiàn)的倒計(jì)時(shí)動(dòng)態(tài)顯示效果代碼,涉及JSP時(shí)間操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10一個(gè)jsp+AJAX評(píng)論系統(tǒng)
一個(gè)jsp+AJAX評(píng)論系統(tǒng)...2007-05-05在.jsp中非表單請(qǐng)求action的幾種方式總結(jié)
本文整理了3種非表單請(qǐng)求action,需要注意的是第二種:action名都是在sturts.xml中配置的名字,有需求的朋友可以參考下哈,希望對(duì)你有所幫助2013-04-04tomcat共享多個(gè)web應(yīng)用會(huì)話的實(shí)現(xiàn)方法
這篇文章主要介紹了tomcat共享多個(gè)web應(yīng)用會(huì)話的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10