@Transactional(propagation = "设置事务传播行为")
时间: 2024-02-26 18:55:32 浏览: 98
这是一个在 Spring 框架中使用的注解,用于控制事务的传播行为。propagation 属性用于设置事务的传播行为,它可以取以下值:
- REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
- SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
- MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
- REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起该事务。
- NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,则挂起该事务。
- NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常。
- NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则创建一个新的事务。
通过设置不同的传播行为,可以控制事务的行为,从而保证数据的一致性和完整性。
相关问题
19.下面选项对"@Transactional"描述正确的是() ☆ 【不定项选择】 A.@Transactional(propagation = "设置事务传播行为") B.@Transactional(rollbackFor = "指定回滚类型的异常") C.@Transactional(noRollbackFor = "指定回滚类型的异常") D.@Transactional(value= "设置事务传播行为")
A、B、C、D 都是正确的。
A. @Transactional(propagation = "设置事务传播行为"):用来设置事务的传播行为,常用的传播行为有:REQUIRED(默认值)、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED。
B. @Transactional(rollbackFor = "指定回滚类型的异常"):用来设置事务在遇到指定类型的异常时回滚,可以指定多个异常类型。
C. @Transactional(noRollbackFor = "指定不回滚类型的异常"):用来设置事务在遇到指定类型的异常时不回滚,可以指定多个异常类型。
D. @Transactional(value= "设置事务传播行为"):用来设置事务的传播行为,与 A 选项作用相同,只是写法不同。
@Transactional(rollbackFor = Exception.class)与@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)的区别
@Transactional注解用于声明事务,在Spring中常用来保证方法的执行在一个事务内部,以确保数据的一致性和完整性。其中,rollbackFor参数指定哪些异常需要回滚事务,Propagation.REQUIRED指定了方法的事务传播行为。
区别如下:
- @Transactional(rollbackFor = Exception.class):这个注解只指定了回滚的异常类型,而没有指定传播行为,默认传播行为是Propagation.REQUIRED。
- @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class):这个注解指定了方法的事务传播行为和回滚的异常类型。
简单来说,前者只指定了回滚异常类型,而后者不仅指定了回滚异常类型,还明确指定了事务的传播行为。
阅读全文