首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring2.0 DataSourceTransactionManager 事务回滚有关问题

2012-11-18 
Spring2.0 DataSourceTransactionManager 事务回滚问题在使用Spring的DataSourceTransactionManager过程中

Spring2.0 DataSourceTransactionManager 事务回滚问题
在使用Spring的DataSourceTransactionManager过程中,系统发生第一次错误并进行回滚,可是已经提交的数据没有回滚,从第二次开始,系统发生错误后回滚就正常了。

private static final ThreadLocal session = new ThreadLocal();//DB使用线程同步DB db = (DB)session.get();


在事务之前如果使用过DB,也就是在事务之前获得过连接,那么在db.execute()操作时,获得的连接还是线程池中的连接,而不是TransactionManager中新创建的连接;这样的话,如果操作不报错,数据更新等是对的,因为conn.getAutoCommit()是true;如果报错,就会有数据被回滚。

这个现象在使用Spring的JDBCTemplate或者TransactionTemplate里面不会出问题,因为连接是它创建好给你使用的。

如果单独使用Spring的Transaction,就需要注意,必须在事务里面获得相应的数据库连接,除非你把你的数据库连接赋给事务。

热点排行