「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战」
聊了好久的关于数据库,MYSQL的事务,今天我们进行新的一个标题领域,是关于spring的,
就是spring的事务。
spring事务
本质上是基于数据库事务的包装, 经过spring事务的简化包装,使得我们将开启事务,运行事务,结束事务,回滚事务更加的便捷和快速。
其中spring主要是支持对于事务的管理功能 如果要使用spring的事务,首先是当前使用对接的数据库 ,本身是支持事务的(MySQL是支持事务的)
JDBC数据库的驱动
如果我们需要在项目中,使用对接数据库的进行增删改查, crud的操作,这种操作肯定会用到数据库的事务,进行事务处理, 如果是原生的处理方式,就是MySQL的JDBC的驱动,在程序中去加载这个驱动,然后将数据库和我们的程序链接在一起,进行事务处理。
- JDBC的加载:
class.forName("com.mysql.jdbc.Driver")
- 建立数据库的连接,后两个参数分别为账号和密码:
Connection conn =DriverManger.getConnection(URL,“root”,“root”);
- 开启事务
conn.setAutoCommit(true/false)
- 数据库执行CRUD操作
PreparedStateMent ps=con.prepareStatement(sql)
ps.executeUpdate();
ps.executeQuery();
- 提交或者回滚事务
conn.commit();
conn.rollback();
- 关闭连接
ps.close();
conn.close();
spring管理事务
spring事务功能 ,包装好了底层的JDBC的驱动事务功能,也就是通常上面的 第三部到最后的功能,
一般要利用spring事务,需要在类或者方法上,加上注解@Transactional注解, 当前spring的事务中,开启事务,
这些都是底层spring的框架AOP代理字段完成的,
事务的运行过程
大家都知道spring是基于IOC容和AOP来进行管理器bean对象,加上这个@Transactional注解,spring容器启动的时候会扫描整个类中具有标识注解的类和方法,并为这些个方法创建代理对象,其中也进行相应的参数配置,从而对事务进行管理