用python做一旅游網(wǎng)站百度平臺電話多少
事務(wù)隔離級別:
先了解一些事務(wù)隔離級別有哪些:
未提交讀(Read Uncommitted): 允許臟讀,也就是可能讀取到其他會話中未提交事務(wù)修改的數(shù)據(jù)
提交讀(Read Committed): 只能讀取到已經(jīng)提交的數(shù)據(jù)。Oracle等多數(shù)數(shù)據(jù)庫默認都是該級別 (不重復讀)
可重復讀(Repeated Read): 在同一個事務(wù)內(nèi)的查詢都是事務(wù)開始時刻一致的,Mysql的InnoDB默
認級別。在SQL標準中,該隔離級別消除了不可重復讀,但是還存在幻讀(多個事務(wù)同時修改同一
條記錄,事務(wù)之間不知道彼此存在,當事務(wù)提交之后,后面的事務(wù)修改的數(shù)據(jù)將會覆蓋前事務(wù),前
一個事務(wù)就像發(fā)生幻覺一樣)
可串行化(Serializable): 完全串行化的讀,每次讀都需要獲得表級共享鎖,讀寫相互都會阻塞。
不可重復讀和幻讀的區(qū)別主要是: 解決不可重復讀需要鎖定了當前滿足條件的記錄,而解決幻讀需要鎖定當前滿足條件的記錄及相近的記錄。比如查詢某個商品的信息,可重復讀事務(wù)隔離級別可以
保證當前商品信息被鎖定,解決不可重復讀;但是如果統(tǒng)計商品個數(shù),中途有記錄插入,可重復讀
事務(wù)隔離級別就不能保證兩個事務(wù)統(tǒng)計的個數(shù)相同。
事務(wù)的傳播級別:
Spring事務(wù)定義了7種傳播機制:
1: PROPAGATION_REQUIRED:默認的Spring事物傳播級別,若當前存在事務(wù),則加入該事務(wù),若不存在事務(wù),則新建一個事務(wù)。
2: PAOPAGATION_REQUIRE_NEW:若當前沒有事務(wù),則新建一個事務(wù)。若當前存在事務(wù),則新建一個事務(wù),新老事務(wù)相互獨立。外部事務(wù)拋出異?;貪L不會影響內(nèi)部事務(wù)的正常提交。
3: PROPAGATION_NESTED:如果當前存在事務(wù),則嵌套在當前事務(wù)中執(zhí)行。如果當前沒有事務(wù),則新建一個事務(wù),類似于REQUIRE_NEW。
4: PROPAGATION_SUPPORTS:支持當前事務(wù),若當前不存在事務(wù),以非事務(wù)的方式執(zhí)行。
5: PROPAGATION_NOT_SUPPORTED:以非事務(wù)的方式執(zhí)行,若當前存在事務(wù),則把當前事務(wù)掛起。
6: PROPAGATION_MANDATORY:強制事務(wù)執(zhí)行,若當前不存在事務(wù),則拋出異常。
7: PROPAGATION_NEVER:以非事務(wù)的方式執(zhí)行,如果當前存在事務(wù),則拋出異常。
Spring事務(wù)傳播級別一般不需要定義,默認就是PROPAGATION_REQUIRED,除非在嵌套事務(wù)的情
況下需要重點了解。
Spring 事務(wù)實現(xiàn)方式:
編程式事務(wù)管理: 這意味著你可以通過編程的方式管理事務(wù),這種方式帶來了很大的靈活性,但很難維護。
聲明式事務(wù)管理: 這種方式意味著你可以將事務(wù)管理和業(yè)務(wù)代碼分離。你只需要通過注解或者XML配置管理事務(wù)。
事務(wù)三要素是什么:
數(shù)據(jù)源: 表示具體的事務(wù)性資源,是事務(wù)的真正處理者,如MySQL等。
事務(wù)管理器: 像一個大管家,從整體上管理事務(wù)的處理過程,如打開、提交、回滾等。
事務(wù)應(yīng)用和屬性配置: 像一個標識符,表明哪些方法要參與事務(wù),如何參與事務(wù),以及一些相關(guān)屬性如隔離級別、超時時間等。
事務(wù)注解的本質(zhì)是什么:
@Transactional 這個注解僅僅是一些(和事務(wù)相關(guān)的)元數(shù)據(jù),在運行時被事務(wù)基礎(chǔ)設(shè)施讀取消
費,并使用這些元數(shù)據(jù)來配置bean的事務(wù)行為。 大致來說具有兩方面功能,一是表明該方法要參與事務(wù),二是配置相關(guān)屬性來定制事務(wù)的參與方式和運行行為
聲明式事務(wù)主要是得益于Spring AOP。使用一個事務(wù)攔截器,在方法調(diào)用的前后/周圍進行事務(wù)性
增強(advice),來驅(qū)動事務(wù)完成。
@Transactional注解既可以標注在類上,也可以標注在方法上。當在類上時,默認應(yīng)用到類里的所
有方法。如果此時方法上也標注了,則方法上的優(yōu)先級高。 另外注意方法一定要是public的。
Spring框架的事務(wù)管理有哪些優(yōu)點:
1: 它為不同的事務(wù)API(如JTA, JDBC, Hibernate, JPA, 和JDO)提供了統(tǒng)一的編程模型。它為編程式事務(wù)管理提供了一個簡單的API而非一系列復雜的事務(wù)API(如JTA).它支持聲明式事務(wù)管理。它可以和Spring 的多種數(shù)據(jù)訪問技術(shù)很好的融合。
2: 它為不同的事務(wù)API(如JTA, JDBC, Hibernate, JPA, 和JDO)提供了統(tǒng)一的編程模型。它為編程式事務(wù)管理提供了一個簡單的API而非一系列復雜的事務(wù)API(如JTA).它支持聲明式事務(wù)管理。它可以和Spring 的多種數(shù)據(jù)訪問技術(shù)很好的融合。
3: 它為不同的事務(wù)API(如JTA, JDBC, Hibernate, JPA, 和JDO)提供了統(tǒng)一的編程模型。它為編程式事務(wù)管理提供了一個簡單的API而非一系列復雜的事務(wù)API(如JTA).它支持聲明式事務(wù)管理。它可以和Spring 的多種數(shù)據(jù)訪問技術(shù)很好的融合。