事務傳播屬性
required:業務方法需要在乙個事務中執行。如果方法執行時,已經處在乙個事務中,那麼加入到該事務,否則為自己建立乙個新的事務。(預設)
not_supported:宣告方法不需要事務。如果方法沒有關聯到乙個事務,容器不會為它開啟事務。如果方法在乙個事務中被呼叫,該事務會被掛起,在方法呼叫結束後,原先的事務便會恢復執行。
requiresnew:屬性表明不管是否存在事務,業務方法總會為自己發起乙個新的事務。如果方法已經執行在乙個事務中,則原有事務會被掛起,新的事務會被建立,直到方法執行結束,新事務才算結束,原先的事務才會恢復執行。
mandatory:該屬性指定業務方法只能在乙個已經存在的事務中執行,業務方法不能發起自己的事務。如果業務方法在沒有事務的環境下呼叫,容器就會丟擲例外。
supports:這一事務屬性表明,如果業務方法在某個事務範圍內被呼叫,則方法成為該事務的一部分。如果業務方法在事務範圍外被呼叫,則方法在沒有事務的環境下執行。
never:指定業務方法絕對不能在事務範圍內執行。如果業務方法在某個事務中執行,容器會丟擲例外,只有業務方法沒有關聯到任何事務,才能正常執行。
nested:如果乙個活動的事務存在,則執行在乙個巢狀的事務中. 如果沒有活動事務, 則按required屬性執行.它使用了乙個單獨的事務, 這個事務擁有多個可以回滾的儲存點。內部事務的回滾不會對外部事務造成影響。它只對datasourcetransactionmanager事務管理器起效
資料庫系統提供了四種事務隔離級
資料庫系統提供了四種事務隔離級別供使用者選擇。不同的隔離級別採用不同的鎖型別來實現,在四種隔離級別中,serializable的隔離級別最高,read uncommited的隔離級別最低。大多資料庫預設的隔離級別為read commited,如sqlserver,當然也有少部分資料庫預設的隔離級別為repeatable read ,如mysql
*read uncommited:讀未提交資料(會出現髒讀,不可重複讀和幻讀)。
*read commited:讀已提交資料(會出現不可重複讀和幻讀)
*repeatable read:可重複讀(會出現幻讀)
*serializable:序列化
髒讀:乙個事務讀取到另一事務未提交的更新新據。
不可重複讀:在同一事務中,多次讀取同一資料返回的結果有所不同。換句話說就是,後續讀取可以讀到另一事務已提交的更新資料。相反,「可重複讀」在同一事務中多次讀取資料時,能夠保證所讀資料一樣,也就是,後續讀取不能讀到另一事務已提交的更新資料。
幻讀:乙個事務讀取到另一事務已提交的insert資料。
Spring 事務 事務控制
0 註解 autowire 自動注入 url url b 1 spring專案中事務手動回滾 b transactionaspectsupport.currenttransactionstatus setrollbackonly 或者丟擲異常 transactional rollbackfor pu...
Spring事務(一) Spring事務的使用
事務的經典舉例 某人要在商店使用電子貨幣購買100元的東西,當中至少包括兩個操作 該人賬戶減少100元 商店賬戶增加100元 事務就是要確保以上兩個操作 都能完成 或者 一起取消,否則就會出現100元平白消失或出現的情況。摘自wiki spring事務有兩種方式 程式設計式事務管理 宣告式事務管理 ...
Spring事務(二) Spring事務的特點
實現事務必須滿足以下四大特性 隔離性 通過mvvc實現 相對應的有mvcc 原子性 一致性 永續性 通過資料庫的redo log undo log force log at commit實現 資料庫是可以控制事務的傳播和隔離級別的,spring在之上又進一步做了封裝,本質上是同一概念。事務的四大特性...