spring事务:
1、编程式事务管理(在代码中手动开始,提交,关闭事务)比较灵活
2、声明式事务管理(1,基于xml;2基于注解@Transactional)(基于spring的AOP动态代理)
项目里面主要使用注解@Transactional实现事务管理:
事务传播行为:7个
PROPAGATION_REQUIRED默认:当前有事务加入当前事务,否则创建新事务
PROPAGATION_REQUIRED_NEW:创建自己新事务,当前有事务则挂起当前事务
PROPAGATION_NESTED:使用嵌套事务,开启自己独立的事务
事务隔离级别:
读未提交(脏读,可重复读,幻读,);
读已提交(可重复读,幻读)
可重复读(幻读)
串行化
默认和数据库保持一致,有设置的话优先级用spring设置
事务失效场景:
①异常被捕获,未做处理
②在同一个类里,会导致事务失效,因为AOP是代理模式,需要注意的是失效的是被调用方法, 但是调用方事务不受影响,仍可加入
③事务在多线程中被调用
④事务传播行为设置不加入
⑤异常级别未设置,抛出了受检查异常,默认是只回滚runtimeException类的异常
⑥不是公有方法
⑦final和static方法
⑧数据库引擎不支持事务
@Transactional失效引发的spring事务相关
于 2025-01-14 16:17:36 首次发布