-
TransactionDefinition定義事務(wù)隔離級別 如果不考慮隔離性,會(huì)引發(fā)如下的安全問題: 1.臟讀。 一個(gè)事務(wù)讀取了另一個(gè)事務(wù)改寫但還未提交的數(shù)據(jù),如果這些數(shù)據(jù)被回滾,則讀到的數(shù)據(jù)是無效的。 2.不可重復(fù)讀。 在同一個(gè)事務(wù)中,多次讀取同一數(shù)據(jù)返回的結(jié)果有所不同。 3.幻讀。 一個(gè)事務(wù)讀取了幾行記錄后,另一個(gè)事務(wù)插入一些記錄,幻讀就發(fā)生了。再后來的查詢中,第一個(gè)事務(wù)就會(huì)發(fā)現(xiàn)有些原來沒有的記錄。 隔離級別的出現(xiàn)就是為了解決以上問題的。 數(shù)據(jù)庫提供的事務(wù)的隔離級別(四種): 1.READ_UNCOMMITED; 允許你讀取還未提交的改變了的數(shù)據(jù),可能導(dǎo)致臟,幻,不可重復(fù)讀。 2.READ_COMMINTED: 允許在并發(fā)事務(wù)已經(jīng)提交后讀取,可防止臟讀,但幻讀和不可重復(fù)讀還是有可能發(fā)生。 3.REPEATABLE_READ: 對相同字段的多次讀取是一致的,除非數(shù)據(jù)被事務(wù)本身改變,可防止臟讀,不可重復(fù)讀,但幻讀仍有可能出現(xiàn)。 4.SERILIZABLE: 完全服從ACID的隔離級別,確保不發(fā)生臟讀,幻讀,不可重復(fù)讀,這在所有的隔離級別中是最慢的,它是典型的完全通過鎖定在事務(wù)中涉及的數(shù)據(jù)表來完成的。 除了以上的數(shù)據(jù)庫提供的事務(wù)隔離級別,spring提供了Default隔離級別,該級別表示spring使用后端數(shù)據(jù)庫默認(rèn)的隔離級別。 MySQL默認(rèn)事務(wù)隔離級別:REPATABLE_READ(可能出現(xiàn)幻讀) Oracle默認(rèn):READ_COMMITTED(可能出現(xiàn)不可重復(fù)讀和幻讀)查看全部
-
事務(wù)管理器PlatformTransactionManager接口下面的相關(guān)實(shí)現(xiàn)類查看全部
-
事務(wù)的四大特性: 原子性:一個(gè)事務(wù)或者完全發(fā)生、或者完全不發(fā)生。 一致性、事務(wù)操作之后,數(shù)據(jù)庫所處的狀態(tài)和有業(yè)務(wù)規(guī)則是一致的。 隔離性:操作中的事務(wù)不互相影響。 持久性:操作中放入事務(wù)提交后被持久化到數(shù)據(jù)庫。查看全部
-
配置事務(wù)代理流程查看全部
-
上一節(jié)的編程式事務(wù)管理總結(jié)查看全部
-
事務(wù)的傳播行為查看全部
-
事務(wù)接口概覽查看全部
-
基于注解的聲明式事務(wù)管理方式的Transactional注解的屬性配置查看全部
-
開啟注解事物查看全部
-
Aspectj的聲明式事物管理詳細(xì)配置查看全部
-
基于Aspectj的XML的聲明式事物管理的配置查看全部
-
xml配置聲明式事物的 原始方式查看全部
-
test配置查看全部
-
TransactionStatus接口用來記錄事務(wù)的狀態(tài) 該接口定義了一組方法,用來獲取或判斷事務(wù)的相應(yīng)狀態(tài)信息. 平臺事務(wù)管理器(PlatformTransactionManager)會(huì)根據(jù)TransactionDefinition中定義的事務(wù)信息(包括隔離級別、傳播行為)來進(jìn)行事務(wù)的管理,在管理的過程中事務(wù)可能產(chǎn)生了保存點(diǎn)或事務(wù)是新的事務(wù)等情況,那么這些信息都會(huì)記錄在TransactionStatus的對象中.查看全部
-
事務(wù)傳播行為查看全部
舉報(bào)
0/150
提交
取消