記錄下來,以後備用
//事務傳播屬性
@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...