scope屬性和宣告式事務

2021-10-01 06:16:25 字數 1927 閱讀 4284

scope屬性和宣告式事務

的屬性 作用是控制物件有效範圍(單例,多例),標籤對應的物件預設是單例的,無論獲取多少次都是同乙個物件

宣告式事務分為:

程式設計時事務:由程式設計師程式設計事務控制** 宣告式事務:事務控制**已經由spring寫好,程式設計師只需要宣告出哪些方法需要進行事務控制和如何進行事務控制,宣告式事務都是針對serviceimpl類下方法的,事務管理器基於通知(advice)的

宣告式事務中屬性解釋

name=""哪些方法需要有事務控制 支援*萬用字元 readonly="boolean"是否是唯讀事務,如果為true,告訴資料庫此事務為唯讀事務,資料庫優化,回對效能有一定提公升,所以只要是查詢的辦法,建議使用此資料,如果為false(預設值),事務需要提交的事務,建議新增,刪除和修改

propagation 控制事務傳播行為:

當乙個具有事務控制的方法被另乙個有事務控制的方法呼叫後,需要如何管理事務(新建事務?在事務中執行?把事務掛起?還是報異常?)

required(預設值):如果當前有事務,就在事務中執行,如果當前沒有事務,新建乙個事務

supports:如果當前有事務就在事務中執行,如果當前沒有事務,就在非事務狀態下執行

mandatory:必須在事務內部執行,如果當前有事務,就在事務中執行,如果沒有事務,就報錯

requires_new:必須在事務中執行,如果當前沒有事務,新建事務,如果當前有事務,把當前事務掛起

not_supported:必須在非事務下執行,如果當前沒有事務,正常執行,如果當前有事務,把當前事務掛起

never:必須在非事務狀態下執行,如果當前沒有事務,正常執行,如果當前有事務,報錯

nested:必須在事務狀態下執行,如果沒有事務,新建事務,如果當前有事務,建立乙個巢狀事務

isolation=""事務隔離級別

在多執行緒或併發訪問下需要保證訪問到的資料具有完整性

髒讀:乙個事務a讀取到另乙個事務b未提交的資料,另乙個事務中資料可能進行了改變,此時a事務讀取的資料可能和資料庫中的資料是不一致的,此時認為資料是髒資料,這個過程叫做髒讀

不可重複讀:主要針對的是某行資料(或行中某列),修改操作,當事務a第一次讀取事務後,事務b對事物a讀取的資料進行修改,事務a中再次讀取的資料和之前讀取的資料不一致,這個過程叫做不可重複讀

幻讀:主要針對的操作時新增或者刪除,兩次事務的結果,事務a按照特定條件查詢出結果,事務b新增了一條符合這個條件的資料,事務a中查詢的資料和資料庫中的資料不一致,事務a好像出現了幻覺,這種情況稱為幻讀

default:預設值,由底層資料庫自動判斷應該使用什麼隔離級別

read_uncommited:可以讀取未提交資料,可能出現髒讀,不可重複讀,幻讀,但是效率最高

read_commited:只能讀取其它事務已經提交的資料,可以防止髒讀,可能出現不可重複讀和幻讀

repeatable_read:讀取的資料被新增鎖,防止其它事務修改此資料,可以防止不可重複讀,髒讀,可能出現幻讀

serializable:排隊操作 對整個表新增鎖,乙個事務在運算元據時,另乙個事務等待事務操作完成後才能操作這個表最安全但是效率最低

<

!--配置宣告式事務--

>

"txadvice" transaction-manager=

"txmanager"

>

<

!--哪些方法需要有事務控制--

>

<

!--方法以ins開頭事務管理--

>

"ins*" propagation=

"" isolation=""/

>

"del*"

/>

"upd*"

/>

"*"/

>

<

/tx:attributes>

<

/tx:advice>

spring 程式設計式事務和宣告式事務

1 程式設計式事務 transactiontemplate transactiontemplate.execute new transactioncallbackwithoutresult getcount transactionstatus.setrollbackonly 執行execute方法,...

Spring的程式設計式事務和宣告式事務

使用transactiontemplate或者直接使用底層的platformtransactionmanager。對於程式設計式事務管理,spring推薦使用transactiontemplate。也就是說要在核心配置檔案中配置transactionmanager事務管理器,還要配置transact...

宣告式事務

宣告式事務編輯以方法為單位,進行事物控制 丟擲異常,事物回滾。最小的執行單位為方法。決定執行成敗是通過是否丟擲異常來判斷的,丟擲異常即執行失敗 宣告式事務 declarative transaction management 是spring提供的對程式事務管理的方式之一。spring的宣告式事務顧名...