禁用自动提交事务
最佳实践是禁用自动提交事务
连接池
配置的时候禁用事务自动提交。
总结
1.如果没有禁用,每次查询执行完成之后,都会自动提交事务;每次更新完成之后,也会自动提交事务。
2.如果禁用,那就是等到方法结束的时候才作为一个原子操作一起提交事务。
有连接池和没连接池的区别
没连接池-架构图
有连接池-架构图 //第一层就被连接池拦截了
连接对象-提交事务
是连接对象来提交事务
ServiceLoader机制
核心步骤
1.在配置文件指定拦截器
2.自定义实现拦截器类
比如dubbo的拦截器,你要自定义实现,然后用的时候,就是这么玩的。
不要滥用事务注解
事务注解的坑
事务也会超时
不同超时情况
1.事务超时
2.执行sql语句超时
3.底层socket通信超时
spring容器框架管理事务
可以通过事务注解的属性来设置事务超时时间
事务超时时间是什么?
n个sql语句耗时的总和。
单个sql语句,也可以独立只设置当前单个sql语句执行耗时的超时。
1.通过dao框架配置,比如mybatis
2.可以针对增删查改分别配置不同的阈值