@Transactional 使用
时间: 2023-10-31 07:57:45 浏览: 136
@Transactional 是一个用于声明事务的注解,它可以应用在方法级别或类级别上。
当 @Transactional 注解应用在方法上时,它表示该方法是一个事务性方法,并且会被 Spring 事务管理器所控制。如果该方法执行成功,则事务会被提交,如果执行过程中发生异常,则事务会被回滚。
当 @Transactional 注解应用在类级别上时,它表示该类中的所有公共方法都是事务性方法,并且会被 Spring 事务管理器所控制。
@Transactional 注解可以接受一些参数,用于配置事务的属性,例如事务的传播行为、隔离级别、超时时间等。默认情况下,事务的传播行为是 REQUIRED,隔离级别是数据库默认的隔离级别,超时时间是没有限制。
以下是一个使用 @Transactional 注解的示例:
```java
@Service
@Transactional
public class UserService {
@Autowired
private UserRepository userRepository;
public User getUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
public void updateUser(User user) {
userRepository.save(user);
}
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, readOnly = true)
public List<User> getAllUsers() {
return userRepository.findAll();
}
}
```
在上面的示例中,`getUserById` 方法和 `getAllUsers` 方法都会被事务管理器所管理,因为它们所在的类上使用了 @Transactional 注解。而 `updateUser` 方法还明确指定了事务的传播行为和隔离级别。
希望这能解答你的问题,如果有其他疑问,请随时提出。
阅读全文