事物失效的几种情况

    
     最近开发中老发现事物有时候生效,有时候又不生效。就查了下资料,总结一些会影响事物失效的原因。
     事物怎么配置这里就不累赘了,网上一搜一大把。
     1、数据库引擎:尤其是mysql数据库只有是InnoDB引擎的时候事物才能生效。
        show engines  查看数据库默认引擎
        SHOW TABLE STATUS from 数据库名字  where Name='表名' 如下
        SHOW TABLE STATUS from rrz  where Name='rrz_cust'
      修改表的引擎alter table table_name engine=innodb;
    
     2、mvc项目controler和service要分开扫描,不要为了简单写到一句里,因为加载controler的时候同时加载了其他带有事物的service模块就会导致事物失效
        只扫描controler的
<context:component-scan base-package="com.rrz" use-default-   filters="false ><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

      扫描其他的<context:component-scan base-package="com.rrz">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
     3、事物回滚的异常基本。默认情况下事物的异常级别是运行时异常,也就是RuntimeException,这样如果是检查基本的异常引起额错误就不会回滚。所以需要的话要自己制定异常基本。声明式事物的制定方式@Transactional(rollbackFor=Exception.class)配置的自己去百度吧,到处都是
     4、多数据源时,交叉事物。这个要考虑好怎么自己管理自己的事物。
    
暂时就就想起这么多。有遇到的时候再补点
可以进qq交流群216396734咨询

猜你喜欢

转载自lxlcx201.iteye.com/blog/2291791