Mybatis事务

默认配置下,事务只会对Error和RuntimeException及其子类这些UNChecked异常,做出回滚。一般的Exception异常不会回滚,如果一般Exception想要回滚则需要手动抛出Runtimeexception进行回滚。或者把@Transactional改为@Transactional(rollbackFor = Exception.class)

事务未生效

1、spring的事务注解@Transactional只能放在public修饰的方法上才起作用,如果放在其他非public(private,protected)方法上,虽然不报错,但是事务不起作用

2、在方法内用try…catch 捕获了异常,但没有抛出能够RuntimeException异常。如果需要抛出exception异常,事务也进行回滚,则需要把注解@Transactional改为@Transactional(rollbackFor = Exception.class)

3、如果采用spring+spring mvc,则context:component-scan重复扫描问题可能会引起事务失败。 如果spring和mvc的配置文件中都扫描了service层,那么事务就会失效。原因如下:

  • a Spring与SpringMVC属于父子容器关系。框架启动时先启动Spring容器,而后启动SpringMVC容器。子容器可以访问父容器中的Bean,而父容器不能访问子容器中的Bean。
  • b 由于SpringMVC在扫描时扩大了扫描范围,装载了@Service标识的类的实例,从而导致Controller层在注入Service时,实际注入的时子容器中的Service实例。
  • c 事务被配置在父容器中,Spring父容器在装载Service时会同时应用事务配置,而SpringMVC只是单纯加载Service的实例。

4、如使用mysql且引擎是MyISAM,则事务会不起作用,原因是MyISAM不支持事务,可以改成InnoDB引擎

5、在类A里面有方法a 和方法b, 然后方法b上面用 @Transactional加了方法级别的事务,在方法a里面 调用了方法b, 方法b里面的事务不会生效。原因是在同一个类之中,方法互相调用,切面无效 ,而不仅仅是事务。这里事务之所以无效,是因为spring的事务是通过aop实现的。

Mybatis事务失效的几种情况相关推荐

  1. spring中事务失效的几种情况

    下面简单介绍下,spring中常见的事务失效的几种情况.让我们在开发的过程避免这些情况,写出正确而且优雅的代码. 文章目录 数据库引擎不支持,mysql需要InnoDB 方法必须是public的 方法 ...

  2. MyBatis一级缓存失效的几种情况

    MyBatis一级缓存失效的几种情况 文章目录 MyBatis一级缓存失效的几种情况 1 MyBatis一级缓存概述 2 四种失效的基本情况 3 几种特殊情况 1 MyBatis一级缓存概述 MyBa ...

  3. C++迭代器失效的几种情况总结

    一.序列式容器(数组式容器) 对于序列式容器(如vector,deque),序列式容器就是数组式容器,删除当前的iterator会使后面所有元素的iterator都失效.这是因为vetor,deque ...

  4. mysql数据索引失效_MySQL索引失效的几种情况

    1.索引无法存储null值 a.单列索引无法储null值,复合索引无法储全为null的值. b.查询时,采用is null条件时,不能利用到索引,只能全表扫描. 为什么索引列无法存储Null值? a. ...

  5. java 迭代器失效_迭代器失效的几种情况

    关于迭代器失效,,今天做一个总结. 迭代器失效分三种情况考虑,也是三种数据结构考虑,分别为数组型,链表型,树型数据结构. 1.对于序列式容器,比如vector,删除当前的iterator会使后面所有元 ...

  6. [索引] 索引失效的几种情况

    一.单表索引失效的几种情况 建立员工记录表 CREATE TABLE `staffs` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(255 ...

  7. MySQL索引失效的9种情况(针对InnoDB存储引擎)

    前言 MySQL中提高查询性能的最有效的方式之一就是对数据表合理的设计索引,优秀的索引的设计方案很大程度上可以提高查询的性能. 因此,索引对查询的速度有着至关重要的影响. 为了尽量的使优化器用到我们的 ...

  8. sql索引失效的几种情况

    sql索引失效的几种情况 1.使用 != 或者 <> 导致索引失效 2.类型不一致导致索引失效 3.函数导致索引失效 4.运算符导致索引失效 5.模糊搜索导致索引失效 6.NOT IN.N ...

  9. Redis事务失效的三种场景

    文章目录 Redis 事务失效的三种场景 命令入队报错 命令执行报错 乐观锁导致失效 Redis 事务失效的三种场景 Redis事务失败,有三种类型的失败场景: 命令入队报错 在事务提交之前,客户端执 ...

  10. 聊聊Spring事务失效的12种场景,太坑人了

    前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了. 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据.为了保证操作的原子性(要么同时成功,要么同时失败),避免数据 ...

最新文章

  1. Linux C编程--进程介绍4--errno
  2. 我是如何去了解需求的
  3. 微软“SharePoint天天向上”第一期线上活动
  4. java8 内存设置_Java 8内存分析
  5. 冒泡排序之如何根据对象一个属性排序
  6. python3 下载网络图片
  7. JVM第四节:JVM 执行子程序
  8. 用webclient实现无空间上传文件错误:Could not find a part of the path .....
  9. python无法在终端运行程序_pycharm的Python console不能调试当前程序的解决方案
  10. 读《About Face 4 交互设计精髓》2
  11. chmod 755 究竟是什么鬼?
  12. pr个人宣传片制作思路及常用快捷键
  13. 楼兰宝盒显示网络服务器无响应,捷达vs5-圈里有谁跟我一样,安装了楼兰宝盒后,用手机启动车子出现无钥匙解锁失灵时候使坏,和前部辅助系统出现故障问题,不用手机启动就没事...
  14. 源来是你-Vol.38 | 浪潮开务数据库招人辣!准备好加入幸福感爆棚的KW家族了么?...
  15. 网工必备工具软件——一看就懂,一听就会,一做就废
  16. 体脂秤方案——体脂秤的原理是什么?
  17. 计算机管理中打开移动硬盘磁盘必须格式化,最佳解决方案:无法打开移动硬盘分区,并且未格式化解决方案。...
  18. c3p0的坑导致并发性能问题
  19. Problem E: 类模板Sample
  20. android 悬浮球代码,Android 悬浮球

热门文章

  1. U盘PE启动盘制作好后,如何进入PE系统?
  2. 关闭wps热点及广告弹窗推送
  3. 显示计算机程序的表格如何打开,如何设置打开excel表格的一个窗口显示多标签...
  4. 一文详解 Http 短轮询、长轮询
  5. R语言伴随矩阵的计算
  6. 最实用的Chrome插件--CSDN浏览器助手使用体验
  7. Please refer to E:\SSM\Distributed\edu-parent\edu-dao\target\surefire-reports for the individua
  8. Android应用启动白屏问题解决办法
  9. 《SEM长尾搜索营销策略解密》一一2.10 小领域文化进入红利期
  10. 9. 面向对象基础(下)