关于SpringBoot的事务@Transactional的使用

本文介绍了SpringBoot中@Transactional注解的使用,包括在类和方法级别上的应用,事务的隔离级别(如DEFAULT, READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ, SERIALIZABLE)以及传播行为(如REQUIRED, SUPPORTS, MANDATORY, REQUIRES_NEW, NOT_SUPPORTED, NEVER, NESTED)。还探讨了如何开启事务支持,以及Spring AOP代理和TransactionInterceptor在事务管理中的作用。最后提到了CglibAopProxy和JdkDynamicAopProxy两种代理方式以及事务管理器的层次结构。" 116223382,204453,VBA教程:使用Workbook_SheetChange事件保护工作表,"['Excel开发', 'VBA编程', '工作表事件']
摘要由CSDN通过智能技术生成

@Transactional不仅可以注解在方法上,也可以注解在类上。当注解在类上的时候意味着此类的所有public方法都是开启事务的。如果类级别和方法级别同时使用了@Transactional注解,则
使用在类级别的注解会重载方法级别的注解。

使用@Transactional注解进行事务控制时,可以在其中添加有关“隔离级别”和“传播行为”的指定:
(1)隔离级别
DEFAULT :这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是: READ_COMMITTED 。
READ_UNCOMMITTED :该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。该级别不能防止脏读和不可重复读,因此很少使用该隔离级别。
READ_COMMITTED :该隔离级别表示一个事务只能读取另一个事务已经提交的数据。该级别可以防止脏读,这也是大多数情况下的推荐值。
REPEATABLE_READ :该隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。即使在多次查询之间有新增的数据满足该查询,这些新增的记录也会被忽略。该级别可以防止脏读和不可重复读。
SERIALIZABLE :所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。
指定方法:通过使用 isolation 属性设置,例如:
@Transactional(isolation = Isolation.DEFAULT)

(2)传播行为
REQUIRED :如果当前存在事务,则加入该事务;如果当前没有事务&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值