MyBatis中的事務
MyBatis
中的事務
什麼是事務
事務主要用於處理操作量大,複雜度高的資料
事務必須滿足的條件
- **原子性:**一個事務(transaction)中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
- **一致性:**在事務開始之前和事務結束以後,資料庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設規則,這包含資料的精確度、串聯性以及後續資料庫可以自發性地完成預定的工作。
- **隔離性:**資料庫允許多個併發事務同時對其資料進行讀寫和修改的能力,隔離性可以防止多個事務併發執行時由於交叉執行而導致資料的不一致。事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重複讀(repeatable read)和序列化(Serializable)。
- **永續性:**事務處理結束後,對資料的修改就是永久的,即便系統故障也不會丟失。
不滿足事務會引發的問題
- 髒讀:事務A讀取了事務B更新的資料,然後B回滾操作,那麼A讀取到的資料是髒資料
- 不可重複讀:事務 A 多次讀取同一資料,事務 B 在事務A多次讀取的過程中,對資料作了更新並提交,導致事務A多次讀取同一資料時,結果 不一致。
- 幻讀:系統管理員A將資料庫中所有學生的成績從具體分數改為ABCDE等級,但是系統管理員B就在這個時候插入了一條具體分數的記錄,當系統管理員A改結束後發現還有一條記錄沒有改過來,就好像發生了幻覺一樣,這就叫幻讀。
Mybatis
設定自動提交
獲取SqlSession
物件時, SqlSessionFactory.onpenSession(true)
中傳入true
值
相關文章
- Mybatis--事務控制MyBatis
- MyBatis 事務管理解析:顛覆你心中對事務的理解!MyBatis
- MyBatis5:MyBatis整合Spring事務管理(上篇)MyBatisSpring
- SpringMVC、MyBatis 宣告式事務管理SpringMVCMyBatis
- 編輯 Java 中的事務 — JDBC 事務和 JTA 事務JavaJDBC
- MongoDB 中的事務MongoDB
- Redis 中的事務Redis
- oracle 中的事務Oracle
- MySql中的事務MySql
- MySQL 中的事務理解MySql
- 手寫mybatis框架-增加快取&事務功能MyBatis框架快取
- 初學事務管理:SpringBoot+MybatisSpring BootMyBatis
- 【JAVA高階】——吃透JDBC中的事務及事務的封裝JavaJDBC封裝
- MySQL中的事務和MVCCMySqlMVC
- MySQL 中的事務詳解MySql
- Spring中的事務控制Spring
- Spring 中的事務管理Spring
- JDBC中事務的問題JDBC
- MySQL中的事務處理MySql
- Redis 中的事務分析,Redis 中的事務可以滿足ACID屬性嗎?Redis
- Spring boot +mybatis 實現宣告式事務管理Spring BootMyBatis
- 事務使用中如何避免誤用分散式事務分散式
- ThinkPHP5中的事務操作PHP
- (四)Spring中的事務管理Spring
- SQL Server中的事務與鎖SQLServer
- oracle事務中的儲存點Oracle
- Spring中的事務提交事件Spring事件
- 基於可靠訊息方案的分散式事務(二):Java中的事務分散式Java
- 比較微服務中的分散式事務模式微服務分散式模式
- 關於Spring+Mybatis事務管理中資料來源的思考SpringMyBatis
- MyBatis配合spring事務處理註解無效的問題MyBatisSpring
- 在 Wed 中應用 MyBatis(同時使用MVC架構模式,以及ThreadLocal 事務控制)MyBatisMVC架構模式thread
- Spring中的AOP,以及宣告式事務 @Transactional無法攔截事務Spring
- net中的4種事務總結
- spring中異常的使用--事務Spring
- C#處理Access中的事務C#
- JDBC中事務的問題之二JDBC
- spring,mybatis事務管理配置與@Transactional註解使用[轉]SpringMyBatis