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
- 關於Spring+Mybatis事務管理中資料來源的思考SpringMyBatis
- 初學事務管理:SpringBoot+MybatisSpring BootMyBatis
- MongoDB 中的事務MongoDB
- Redis 中的事務Redis
- oracle 中的事務Oracle
- MySQL 中的事務理解MySql
- Spring 中的事務管理Spring
- 手寫mybatis框架-增加快取&事務功能MyBatis框架快取
- Redis 中的事務分析,Redis 中的事務可以滿足ACID屬性嗎?Redis
- 【JAVA高階】——吃透JDBC中的事務及事務的封裝JavaJDBC封裝
- Spring中的事務提交事件Spring事件
- MySQL中的事務和MVCCMySqlMVC
- MySQL 中的事務詳解MySql
- (四)Spring中的事務管理Spring
- 在 Wed 中應用 MyBatis(同時使用MVC架構模式,以及ThreadLocal 事務控制)MyBatisMVC架構模式thread
- 基於可靠訊息方案的分散式事務(二):Java中的事務分散式Java
- ado.net中事務的使用
- 事務使用中如何避免誤用分散式事務分散式
- 比較微服務中的分散式事務模式微服務分散式模式
- Spring事務專題(四)Spring中事務的使用、抽象機制及模擬Spring事務實現Spring抽象
- 使用MyBatis的注意事項有哪些MyBatis
- net中的4種事務總結
- DTM:Golang中微服務架構的分散式事務框架Golang微服務架構分散式框架
- 解析Spring Boot中的事務管理機制Spring Boot
- 分散式系統中的事務問題分散式
- SQL Server中存在真正的“事務巢狀”SQLServer巢狀
- MySQL中的事務原理和鎖機制MySql
- 淺析MySQL事務中的redo與undoMySql
- Spring中@Transactional事務使用陷阱Spring
- Spring Data JPA中事務ReactiveTransactionManagerSpringReact
- sql server中巢狀事務*SQLServer巢狀
- Spring中如何配置Hibernate事務Spring
- SpringBoot 中的 MyBatisSpring BootMyBatis
- Spring宣告式事務控制原理之宣告式事務的重要元件在AOP中的應用Spring元件
- Mybatis整合二級快取與同時使用快取與事務存在的坑MyBatis快取
- TransactionScope事務處理方法介紹及.NETCore中的注意事項NetCore