事务的基本原理

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 实现的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值