事物隔離級別
- 事物隔離級別是爲解決髒讀、幻讀、不可重複讀
- 髒讀:尚未被確定提交的數據被其他事物讀取到
- 幻讀:進行select時間點上的數據與之後實際的情況不同,即會新增數據
- 不可重複讀: 同一數據同時被多個事物讀取,多個事物可對同一數據同時進行修改,造成數據前後不一致。
SERIALIZABLE 序列化
- 最高級別的事物隔離級別
- 事物按照順序執行: 解決了髒讀、幻讀、不可重複讀
REPEATABLE READ 可重複讀
- 在進行Select時的數據將不可進行修改,但是數據可以新增
- 解決了髒讀、不可重複讀,會出現幻讀
READ COMMITED 讀提交
- 事物在讀取數據後立即釋放了讀鎖,導致其他事物可以修改此數據。
- 解決髒讀,會出現幻讀、不可重複讀
READ UNCOMMITED 讀未提交
- 數據在未提交時可以被其他事物讀取
- 會出現 髒讀、幻讀、不可重複讀
事物傳播屬性
REQUIRED
已存在一個事務,則加入該事務,否則創建一個新的事務.
Spring默認的傳播行爲
REQUIRES_NEW
- 創建新的事物,如果已經存在一個事物則掛起此事物、
SUPPORTS
- 如果存在以存在一個事物且則加入此事物,否則在無事物模式下運行
NOT_SUPPORTED
- 在無事物模式下運行,如果存在事物則掛起該事物
MANDATORY
- 強制使用事物,不存在事物則拋出異常
NESTED
- 當前存在事務,則將該方法運行在嵌套的事務中。被嵌套的事務可以從當前事務中單獨的提交和回滾。如不存在事務,則創建新的事務
NEVER
- 在無事物環境下運行,如存在事物則拋出異常