1.如果传播行为是 Propagation.REQUIRED,哪个说法最能描述传播行为: (选择一项) A.如果存在活动事务,则在嵌套事务中执行;如果没有事务,则启动一个新的事务B.如果已经存在事务,则在该事务中执行;如果没有事务,则在没有事务上下文的情况下执行 C.如果已经存在事务,则在该事务中执行;如果没有事务,则启动一个新的事务D.如果已经存在事务,则在该事务中执行;如果没有活动事务,则抛出一个异常
时间: 2023-08-24 08:04:26 浏览: 34
C. 如果传播行为是 Propagation.REQUIRED,则最能描述传播行为的是:如果已经存在事务,则在该事务中执行; 如果没有事务,则启动一个新的事务.
下面是对选项的解释:
A. 如果存在活动事务,则在嵌套事务中执行; 如果没有事务,则启动一个新的事务是Propagation.REQUIRES_NEW的描述,而不是Propagation.REQUIRED。
B. 如果已经存在事务,则在该事务中执行; 如果没有事务,则在没有事务上下文的情况下执行是Propagation.REQUIRED的描述不准确。
C. 如果已经存在事务,则在该事务中执行; 如果没有事务,则启动一个新的事务是Propagation.REQUIRED的正确描述。
D. 如果已经存在事务,则在该事务中执行; 如果没有活动事务,则抛出一个异常是Propagation.MANDATORY的描述,而不是Propagation.REQUIRED。
相关问题
. PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
PROPAGATION_SUPPORTS 是 Spring 事务传播行为中的一种。它的含义是:如果当前存在事务,则加入该事务,如果当前不存在事务,则以非事务方式执行。
具体来说,如果一个方法使用 PROPAGATION_SUPPORTS 传播行为进行事务控制,那么当该方法被另一个使用事务的方法调用时,它会加入到该事务中执行;当该方法被非事务方法调用时,它会以非事务方式执行。
PROPAGATION_SUPPORTS 传播行为通常用于读取操作,因为读取操作不需要对数据库进行修改,不需要使用事务来保证数据的一致性和完整性。通过使用 PROPAGATION_SUPPORTS 传播行为,可以在当前存在事务时加入到该事务中执行,从而保证数据的一致性和完整性;在当前不存在事务时,可以以非事务方式执行,提高读取操作的执行性能。
需要注意的是,在使用 PROPAGATION_SUPPORTS 传播行为时,不会抛出事务异常,因为它不会开启新的事务,也不会回滚事务。
spring事务 的传播行为PROPAGATION_REQUIRES_NEW:,及其代码示例
PROPAGATION_REQUIRES_NEW 是 Spring 事务传播行为中的一种,表示如果当前存在事务,则挂起该事务,创建一个新的事务并在新的事务中执行方法;如果当前不存在事务,则直接创建一个新的事务并在新的事务中执行方法。
下面是一个简单的示例代码:
```java
@Service
@Transactional
public class UserService {
@Autowired
private UserDao userDao;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveUser(User user) {
userDao.save(user);
}
}
```
在上面的代码中,UserService 的 saveUser 方法被标记为 @Transactional(propagation = Propagation.REQUIRES_NEW),表示在执行该方法时,如果当前存在事务,则挂起该事务,创建一个新的事务并在新的事务中执行 userDao.save(user) 方法;如果当前不存在事务,则直接创建一个新的事务并在新的事务中执行 userDao.save(user) 方法。
需要注意的是,PROPAGATION_REQUIRES_NEW 传播行为会将当前事务挂起,因此在执行完 saveUser 方法后,上层调用者所在的事务仍然是挂起状态,需要等待 saveUser 方法所在的事务结束才能继续执行。因此,在使用 PROPAGATION_REQUIRES_NEW 传播行为时需要慎重考虑。