论坛首页 Java企业应用论坛

浅析“代理模式”实现spring事务管理

浏览 7617 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-12-23  
xiaoZ5919 写道
xiaoZ5919 写道
初级开发者会犯一个错误:直接从SPRING中配置的DATASOURCE中取得CONNECT数据库连接,这样会导致事务失效;
因为你取得的连接的AUTOCOMMIT 是TRUE ;这样事务就没法交给SPRING进行管理啦。

我觉得不一定只是这个原因吧
Spring使用TransactionSynchronizationManager使每个session和当前线程绑定起来。
这样当使用commit的时候肯定能找使用的那个session
我看了一下HibernateTransactionManager的commit只针对session做commit 而不是connection

请忽略上述言论!
session底层的commit还是调用JDBCTransction的commit



用任何技术,都很难绕开JDBC那一层
0 请登录后投票
   发表时间:2011-12-23  
真的是很浅析
0 请登录后投票
   发表时间:2011-12-23  
本质就是保证事务范围类获得的是同一个Connection对象。通过对这个connection进行commit或rollback即可
spring获取数据库连接的时候都会调用到DataSourceUtils这个工具类里面来,看看里面相关的代码就明白了。

至于代理什么的不是事务管理的内容,那是aop相关的东东

0 请登录后投票
   发表时间:2011-12-23  
情已逝 写道
本质就是保证事务范围类获得的是同一个Connection对象。通过对这个connection进行commit或rollback即可
spring获取数据库连接的时候都会调用到DataSourceUtils这个工具类里面来,看看里面相关的代码就明白了。

至于代理什么的不是事务管理的内容,那是aop相关的东东


我讲的是如何使用代理模式来实现事务管理
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics