@Transactional和异常
时间: 2023-10-12 14:06:37 浏览: 81
@DsTransactional注解是在dynamic中的一个注解,其作用与@Transactional注解相同。@Transactional注解用于标记一个方法或类需要使用事务控制。如果不配置rollbackFor属性,事务只会在遇到RuntimeException时回滚。但是,如果加上rollbackFor=Exception.class,事务会在遇到非运行时异常时也回滚。
总结来说,@Transactional注解和异常处理有以下几点关系:
1. 如果在一个包含多条数据库数据插入的方法中使用了try catch去捕获异常,并且没有使用throw e抛出异常终止方法运行,那么即使方法成功被执行且捕获到异常,使用@Transactional和@Transactional(rollbackFor = Exception.class)都不会回滚数据。
2. 加了注解后,如果加了try catch并且要回滚数据,就必须在catch块中使用throw e抛出异常才能实现回滚。如果不加try catch并且方法运行被停止,也会回滚数据。
3. 加了(rollbackFor = Exception.class)只是在遇到非运行时异常的时候会回滚数据。
基于以上情况,推荐使用@Transactional(rollbackFor = Exception.class)注解,这样能够在遇到非运行时异常时也能回滚事务。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Java异常和@Transactional注解](https://blog.csdn.net/weixin_40689677/article/details/123143409)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文