事务的基本原理
Spring 事務的本質其實就是數據庫對事務的支持,沒有數據庫的事務支持,Spring 是無法提供事務功能的。對于純JDBC 操作數據庫,想要用到事務,可以按照以下步驟進行:
1、獲取連接Connection con = DriverManager.getConnection()
2、開啟事務con.setAutoCommit(true/false);
3、執行CRUD
4、提交事務/回滾事務con.commit() / con.rollback();
5、關閉連接conn.close();
使用Spring 的事務管理功能后,我們可以不再寫步驟2 和4 的代碼,而是由Spirng 自動完成。 那么Spring 是如何在我們書寫的CRUD 之前和之后開啟事務和關閉事務的呢?解決這個問題,也就可以從整體上理解Spring 的事務管理實現原理了。下面簡單地介紹下,注解方式為例子
配置文件開啟注解驅動,在相關的類和方法上通過注解@Transactional 標識。
Spring 在啟動的時候會去解析生成相關的bean,這時候會查看擁有相關注解的類和方法,并且為這些類和方法生成代理,并根據@Transaction 的相關參數進行相關配置注入,這樣就在代理中為我們把相關的事務處理掉了(開啟正常提交事務,異常回滾事務)。
真正的數據庫層的事務提交和回滾是通過binlog 或者redo log 實現的。
?
?
總結
- 上一篇: 数据库事务原理详解-事务基本概念
- 下一篇: JdbcTemplate和NamedPa