Spring 事務級別定義

2022-05-13 06:02:05 字數 1850 閱讀 1385

記錄下來,以後備用

//事務傳播屬性

@transactional(propagation=propagation.required)//如果有事務,那麼加入事務,沒有的話新建立乙個

@transactional(propagation=propagation.not_supported)//這個方法不開啟事務

@transactional(propagation=propagation.requireds_new)//不管是否存在事務,都建立乙個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務

@transactional(propagation=propagation.mandatory)//必須在乙個已有的事務中執行,否則丟擲異常

@transactional(propagation=propagation.never)//不能在乙個事務中執行,就是當前必須沒有事務,否則丟擲異常

@transactional(propagation=propagation.supports)//其他bean呼叫這個方法,如果在其他bean中宣告了事務,就是用事務。沒有宣告,就不用事務。

@transactional(propagation=propagation.nested)//如果乙個活動的事務存在,則執行在乙個巢狀的事務中,如果沒有活動的事務,則按照required屬性執行,它使用乙個單獨的事務。這個書屋擁有多個回滾的儲存點,內部事務的回滾不會對外部事務造成影響,它只對datasource transactionmanager事務管理器起效。

@transactional(propagation=propagation.required,readonly=true)//唯讀,不能更新,刪除

@transactional(propagation=propagation.required,timeout=30)//超時30秒

@transactional(propagation=propagation.required,isolation=isolation.default)//資料庫隔離級別

事務傳播行為種類

spring在transactiondefinition介面中規定了7種型別的事務傳播行為,

它們規定了事務方法和事務方法發生巢狀呼叫時事務如何進行傳播:

說明

propagation_required

如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。

propagation_supports

支援當前事務,如果當前沒有事務,就以非事務方式執行。

propagation_mandatory

使用當前的事務,如果當前沒有事務,就丟擲異常。

propagation_requires_new

新建事務,如果當前存在事務,把當前事務掛起。

propagation_not_supported

以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

propagation_never

以非事務方式執行,如果當前存在事務,則丟擲異常。

propagation_nested

如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作。

spring事務隔離級別

在spring中定義了5中不同的事務隔離級別 1.isolation default 一般情況下使用這種配置既可 這是乙個platfromtransactionmanager預設的隔離級別,使用資料庫預設的事務隔離級別。2.isolation read uncommitted 4 p l.i f k...

Spring 事務隔離級別

資料庫事務的隔離級別有4種,由低到高分為為read uncomitted,read comitted,repeatable read serializable,而且,在事務的併發操作中可能會出現髒讀,不可重複度,虛讀 幻讀 髒讀 read uncomitted 什麼都防不住 乙個事務讀到另外乙個事務...

Spring事務隔離級別

事務操作可能出現的問題 更新丟失 lost update 當系統允許兩個事務同時更新同一資料時,發生更新丟失。髒讀 dirty read 當乙個事務讀取另乙個事務尚未提交的修改時,產生髒讀。非重複讀 nonrepeatable read 第一次讀 得到乙個結果 再讀,換了乙個結果 幻像 phanto...