(本文章爲編者在學習中收集總結的筆記,僅供學習,如有侵權,請聯繫我)
事務——Transation
事務是什麼?
事務指邏輯上的一組操作,這組操作要麼全部成功,要麼全部失敗.
事物的特性:
1.原子性Atomic:事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生.
2.一致性Consistent:事務處理前後數據的完整性必須保持一致.
3.隔離性Isolated:多個用戶併發訪問數據庫時,一個用戶的事務不能被其他用戶的事務所幹擾,多個併發事務之間數據要相互隔離.
4.持久性Durable:一個事務一旦被提交,它對數據庫中數據的改變就是永久性的,即使數據庫發生故障也不應該對其有任何影響.
Spring事務管理接口:
PlatformTransactionManager:事務管理器
TransactionDefinition:事務定義信息(事務隔離級別、傳播行爲)
TransactionStatus:事務具體運行狀態
(1)Mysql 默認採用的 REPEATABLE_READ隔離級別
(2)Oracle 默認採用的 READ_COMMITTED隔離級別
如果不考慮隔離性,會引發如下的安全問題:
1.髒讀。 一個事務讀取了另一個事務改寫但還未提交的數據,如果這些數據被回滾,則讀到的數據是無效的。
2.不可重複讀。 在同一個事務中,多次讀取同一數據返回的結果有所不同。
3.幻讀。 一個事務讀取了幾行記錄後,另一個事務插入一些記錄,幻讀就發生了。再後來的查詢中,第一個事務就會發現有些原來沒有的記錄。