首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

使用spring 3 和 连接池 事务遇到的有关问题

2013-11-14 
使用spring 3 和 连接池 事务遇到的问题?此时查询都是正常的,在执行insert,update,delete时执行了sql但是

使用spring 3 和 连接池 事务遇到的问题

?此时查询都是正常的,在执行insert,update,delete时执行了sql但是数据库记录没有改变,经查证是一个配置项有问题:

?

?

?在代码中我们的Connection没有手动提交,所以不能持久化到数据库,为了省事就在配置文件中配置如下:

?后来随着逻辑的复杂,需要引入事务,所以使用spring的dataSource事务管理,根据spring的官方文档,加入如下配置:

?在代码中的Service方法上加入注解:@Transactional(propagation = Propagation.REQUIRED)

?测试代码如下:

?可是在测试后,发现事务不能回滚,第一次的插入数据每次测试都能插入,不能回滚,

当时很纳闷,究竟是什么原因导致事务不能生效呢?

起初怀疑是事务配置有问题,看了官方文档,google好了好多,发现配置没问题,

在后来耐着性子从头到尾看一下配置文件,并思考一下整个测试方法的执行过程,

然后恍然大悟,发现连接池的配置:

?也就是说jdbc虽然在事务里,但是自动提交了,所以spring事务无法让数据库回滚,把true改为false后,经测试数据库正常回滚!

从此次事件中得到的教训是,不要盲目的配置配置文件,发现问题时,要有根据的推理,并且了解整个事件执行的大体逻辑,并耐心的调试每个环节!这样错误就很容易找到了!

?

热点排行