@transactional注解怎么使用
时间: 2023-05-03 14:02:57 浏览: 159
@transactional注解是Spring框架中用来实现事务控制的注解,在进行数据库操作时起到了关键作用。
使用@transactional注解的前提是需要事务管理器进行统一的事务控制,当然Spring默认是开启了事务管理器的。
@transactional注解可以用于类级别和方法级别,如果加在类上,则表示该类下的所有方法都将启用事务管理;如果加在方法上,则只有该方法会启用事务管理。
在使用@transactional注解时,可以为其加上一些参数,例如隔离级别、事务传播行为、回滚规则等。
隔离级别用于控制事务提交前,事务应该具备的隔离程度,有4个级别可选,分别是:
1. DEFAULT:使用数据库默认的隔离级别;
2. READ UNCOMMITTED:允许读取未提交的数据,可能会读到脏数据;
3. READ COMMITTED:只能读取已提交的数据,能保证读到的数据是正确的;
4. REPEATABLE READ:能够重复读取数据,避免了脏读和幻读问题;
事务传播行为用于控制方法执行过程中调用其他方法时的事务处理,共有7个级别可选,分别是:
1. REQUIRED:调用方必须在一个事务中执行,如果不存在则新开启一个事务;
2. SUPPORTS:如果调用方在事务中,则使用该事务;如果没有事务,则不使用事务;
3. MANDATORY:调用方必须在一个事务中,如果没有事务则抛出异常;
4. REQUIRES_NEW:每次都会新开启一个新的事务,并且调用方将会在新事务中执行;
5. NOT_SUPPORTED:将事务标记为不支持,调用方不在事务中,如果有事务则挂起;
6. NEVER:将事务标记为不支持,强制调用方不允许在事务中执行;
7. NESTED:如果调用方在事务中,则在该事务内创建一个嵌套事务,如果没有则新开启一个事务。
回滚规则用于控制在什么情况下事务会回滚,可以设置一个或多个异常类,如果方法抛出这些异常,则事务将回滚。
总之,使用@transactional注解可以使开发人员轻松实现事务控制,避免出现脏数据、幻读等问题,提高了系统的数据一致性和稳定性。
阅读全文