在spring中使用注解式事务,版本2.5.6,数据库使用mysql,默认MyISAM引擎方式,测试采用执行两次插入,在中间抛出异常的方式,结果能插入第一条数据,数据没有回滚,事务无效。在网上查到的是MyISAM不支持事务,于是换用Oracle测试,仍然不行,后来终于发现是因为配置的问题,除了定义对controller的扫描路径写在xxx-servlet.xml外,对service和dao的定义要写到spring的applicationContext配置文件中,问题解决。
<context:component-scan base-package="包路径"/>
在oracle中测试事务成功,异常时能实现数据回滚,再到mysql上测试,MyISAM引擎,异常时数据依然能回滚!!!
看到好多文章说事务的回滚是依赖数据库的回滚,但通过这个测试却不是这么回事
不可轻信,实践/试验才是真道理