使用说明
@Transaction可修饰实现类和实现方法
@Transaction只能修饰public方法,因为是aop方式实现
A、B两个方法,A无@Transactional标签,B有,上层通过A间接调用B,此时事务不生效。
默认配置下,spring 只有在抛出的异常为运行时 unchecked 异常时才回滚该事务
多线程的各线程之间不受事务控制。
@Transaction
事务的隔离级别
1. @Transactional(isolation = Isolation.READ_UNCOMMITTED):读取未提交数据(会出现脏读,
不可重复读) 基本不使用
2. @Transactional(isolation = Isolation.READ_COMMITTED):读取已提交数据(会出现不可重复读和幻读)
3. @Transactional(isolation = Isolation.REPEATABLE_READ):可重复读(会出现幻读)
4. @Transactional(isolation = Isolation.SERIALIZABLE):串行化
事务传播行为:如果在开始当前事务之前,一个事务上下文已经存在,此时可以指定一个事务性方法的执行行为
1. TransactionDefinition.PROPAGATION_REQUIRED:
如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是默认值。
2. TransactionDefinition.PROPAGATION_REQUIRES_NEW:
创建一个新的事务,如果当前存在事务,则把当前事务挂起。
3. TransactionDefinition.PROPAGATION_SUPPORTS:
如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
4. TransactionDefinition.PROPAGATION_NOT_SUPPORTED:
以非事务方式运行,如果当前存在事务,则把当前事务挂起。
5. TransactionDefinition.PROPAGATION_NEVER:
以非事务方式运行,如果当前存在事务,则抛出异常。
6. TransactionDefinition.PROPAGATION_MANDATORY:
如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
7. TransactionDefinition.PROPAGATION_NESTED:
如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;
如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。
@EnableTransactionManagement
Spring Boot 使用事务,首先启动类注解 @EnableTransactionManagement 开启事务支持,然后在Service业务方法上添加注解 @Transactional 便可。
一个应用可以有多个事务管理器。https://blog.csdn.net/u010963948/article/details/79208328
使用事务时通过value属性指定。
最后
以上就是执着人生最近收集整理的关于springboot事务的入门了解的全部内容,更多相关springboot事务内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复