Spring事务原理
//相当于开启事务
//当我们execute的时候,就和服务端建立链接
dataSource.getConnection().createStatement(); //事务的回滚 dataSource.getConnection().rollback(); //默认的话是自动提交,所有的事务操作框架都会把autoCommit改成false,否则的话无法手动干预 dataSource.getConnection().setAutoCommit(false); //只读事务 dataSource.getConnection().setReadOnly(true); //事务的提交 dataSource.getConnection().commit();
1、数据库操作,都会通过事务来管理
ACID,最大的问题,解决数据一致性的问题,能量守恒
分布式:分布式事务处理瞬时一致性,通常说的是最终的一致性(异步核对,主流的方式就通过日志)
事务的操作流程:事务只是一种思想,该如何用技术实现
![](https://img2018.cnblogs.com/i-beta/1306536/201911/1306536-20191127172551173-365363186.png)
像一般操作的Connection(接口)类,这个类是java客户端和数据库事务通信的桥梁,也就是一个包装类,就是一个TCP链接,底层就是socket
但java自己不实现,只是提供这个封装,提供这个JDK,让其他相关数据库厂商自己实现,所以我们要单独导入类似Mysql的jar包
DataSource就是一个Connection的wrapper,也就是Connection的一个包装器
3.
抛出异常回滚,在Spring中异常是要配置的,只有抛出了配置了的异常才会回滚