事物失效的几种情况

最近开发中老发现事物有时候生效,有时候又不生效。就查了下资料,总结一些会影响事物失效的原因。
事物怎么配置这里就不累赘了,网上一搜一大把。
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咨询
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值