事務特性(4種):
原子性 (atomicity):強調事務的不可分割.
一致性 (consistency):事務的執行的前後數據的完整性保持一致.
隔離性 (isolation):一個事務執行的過程中,不應該受到其他事務的干擾
持久性(durability) :事務一旦結束,數據就持久到數據庫
事務的隔離級別:
DEFAULT 這是一個PlatfromTransactionManager默認的隔離級別,使用數據庫默認的事務隔離級別.
未提交讀(read uncommited) :髒讀,不可重複讀,虛讀都有可能發生
已提交讀 (read commited):避免髒讀。但是不可重複讀和虛讀有可能發生
可重複讀 (repeatable read) :避免髒讀和不可重複讀.但是虛讀有可能發生.
串行化的 (serializable) :避免以上所有讀問題.
常見數據庫的默認隔離級別:
Mysql 默認:可重複讀
Oracle 默認:讀已提交
事務的傳播行爲
同一個事務中
PROPAGATION_REQUIRED 支持當前事務,如果不存在 就新建一個(默認)
PROPAGATION_SUPPORTS 支持當前事務,如果不存在,就不使用事務
PROPAGATION_MANDATORY 支持當前事務,如果不存在,拋出異常
沒有在同一個事務中
PROPAGATION_REQUIRES_NEW 如果有事務存在,掛起當前事務,創建一個新的事務
PROPAGATION_NOT_SUPPORTED 以非事務方式運行,如果有事務存在,掛起當前事務
PROPAGATION_NEVER 以非事務方式運行,如果有事務存在,拋出異常
PROPAGATION_NESTED 如果當前事務存在,則嵌套事務執行