@Transactional的使用

2024 / 9 / 20

@Transactional(rollbackFor = Exception.class)@Transactional 的主要区别在于异常回滚的处理。

1. *@Transactional*:默认情况下,只会对运行时异常(如 RuntimeExceptionError)进行回滚。如果你的方法抛出的是受检异常(如 IOException),则不会触发回滚。

2. *@Transactional(rollbackFor = Exception.class)*:无论是运行时异常还是受检异常,都会导致事务回滚。这意味着如果方法内部抛出了任何类型的异常,事务都会被回滚。

如果不添加 rollbackFor,可能会导致以下问题:

- 某些受检异常未被处理,可能会导致数据不一致,因为事务没有回滚。

- 业务逻辑中的某些错误不会被及时发现,从而影响系统的稳定性。

因此,根据你的业务需求,选择是否添加 rollbackFor 是非常重要的。如果需要确保所有异常都能回滚,使用 rollbackFor 是一种更安全的做法。