锁定老帖子 主题:浅析“代理模式”实现spring事务管理
精华帖 (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那一层 |
|
返回顶楼 | |
发表时间:2011-12-23
真的是很浅析
|
|
返回顶楼 | |
发表时间:2011-12-23
本质就是保证事务范围类获得的是同一个Connection对象。通过对这个connection进行commit或rollback即可
spring获取数据库连接的时候都会调用到DataSourceUtils这个工具类里面来,看看里面相关的代码就明白了。 至于代理什么的不是事务管理的内容,那是aop相关的东东 |
|
返回顶楼 | |
发表时间:2011-12-23
情已逝 写道 本质就是保证事务范围类获得的是同一个Connection对象。通过对这个connection进行commit或rollback即可
spring获取数据库连接的时候都会调用到DataSourceUtils这个工具类里面来,看看里面相关的代码就明白了。 至于代理什么的不是事务管理的内容,那是aop相关的东东 我讲的是如何使用代理模式来实现事务管理 |
|
返回顶楼 | |