spring data jpa 事务控制
来源:互联网 发布:手机淘宝新品上架提醒 编辑:程序博客网 时间:2024/06/07 01:34
最近遇到了事务不回滚的情况
为什么不会滚呢??是对spring的事务机制就不明白。!!
默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。
spring aop 异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获runtimeexception的异常,但可以通过
配置来捕获特定的异常并回滚
换句话说在service的方法中不使用try catch 或者在catch中最后加上throw new runtimeexcetpion(),这样程序异常时才能被aop捕获进而回滚
解决方案:
方案1.例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw new RuntimeException()语句,以便让aop捕获异常再去回滚,并且在service上层(webservice客户端,view层action)要继续捕获这个异常并处理
方案2.在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常(现在项目的做法)
其它解决方案
@Transactional(rollbackFor=Exception.class)
0 0
- spring data jpa 事务控制
- Spring Data JPA,事务导致的异常
- Spring Data JPA配置事务失效问题解决
- Spring Data JPA事务失效问题
- Spring Data Jpa 简单使用事务
- Spring Data Jpa 自带事务配置
- Spring data jpa 的事务与缓存优化
- JPA事务控制设置
- Jpa到Spring data jpa
- Spring Data JPA
- Spring-Data-Jpa
- Spring Data JPA
- Spring data jpa
- Spring Data JPA 使用
- Spring Data JPA
- Spring Data JPA
- spring data JPA 配置
- Spring Data JPA
- ionic之Facebook原生登录
- 使用Intent跨Activity传值
- 字符流的应用于文件的拷贝
- Spark DataFrame中基于List的排序UDF
- MathType输入框如何调整
- spring data jpa 事务控制
- 百度统计的异步代码
- Adaboost +HOG/LBP/HAAR 训练问题
- 退出界面,优雅的关闭软键盘。
- mysql 查询最大连接
- java 生成xml文件
- RecyclerView的用法
- 检测到有潜在危险的 Request.Form 值
- 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入