锁定老帖子 主题:详解spring事务属性
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-14
好文章!但是为什么使用PROPAGATION_REQUIRES_NEW,就一定要使用JtaTransactionManager作为事务管理器呢?
|
|
返回顶楼 | |
发表时间:2007-05-14
spiritfrog 写道 好文章!但是为什么使用PROPAGATION_REQUIRES_NEW,就一定要使用JtaTransactionManager作为事务管理器呢?
因为需要把前一个事务挂起!!! 目前只有jta事务管理器才能实现把事务挂起和恢复事务!!! |
|
返回顶楼 | |
发表时间:2007-05-14
jdbc的Connection只有简单的commit 和rollbacke
只有jta事务管理器才有suspend和resume! |
|
返回顶楼 | |
发表时间:2007-05-14
removed
|
|
返回顶楼 | |
发表时间:2007-05-14
关于事务传播属性还有一个常见的误解:
java 代码
此时外部程序对methodA的调用只会发起一个事务,methodB的PROPAGATION_REQUIRES_NEW属性不会起作用 因为methodA是在内部对methodB直接调用,AOP声明式事务自然就不起作用了 所以外部程序对methodB的调用仍然是PROPAGATION_REQUIRES_NEW的 |
|
返回顶楼 | |
发表时间:2007-05-14
klyuan 写道 spiritfrog 写道 好文章!但是为什么使用PROPAGATION_REQUIRES_NEW,就一定要使用JtaTransactionManager作为事务管理器呢?
因为需要把前一个事务挂起!!! 目前只有jta事务管理器才能实现把事务挂起和恢复事务!!! 可以另取一个连接啊 |
|
返回顶楼 | |
发表时间:2007-05-14
Qieqie 写道 klyuan 写道 jdbc的Connection只有简单的commit 和rollbacke
not the case!
只有jta事务管理器才有suspend和resume! jdbc with "save points" supports suspend and resume 晕!!!当然你可以通过保存点来实现事务挂起和恢复!!! 前题是必须是同一个connection!!!! 当一个是数据库事务,而另外一个不是事务库事务时,怎么办? 并且,spring对require_new的处理,并没有有像NESTED那样使用JDBC 的save point!!!! |
|
返回顶楼 | |
发表时间:2007-05-14
daquan198163 写道: 关于事务传播属性还有一个常见的误解:
java 代码
此时外部程序对methodA的调用只会发起一个事务,methodB的PROPAGATION_REQUIRES_NEW属性不会起作用 因为methodA是在内部对methodB直接调用,AOP声明式事务自然就不起作用了 所以外部程序对methodB的调用仍然是PROPAGATION_REQUIRES_NEW的 我不太明白!!!你是支持上面这种说法还是不支持!!!
“此时外部程序对methodA的调用只会发起一个事务,methodB的PROPAGATION_REQUIRES_NEW属性不会起作用
因为methodA是在内部对methodB直接调用,AOP声明式事务自然就不起作用了” 实际情况并不是这样子的!!!
|
|
返回顶楼 | |
发表时间:2007-05-14
daquan198163 写道 klyuan 写道 spiritfrog 写道 好文章!但是为什么使用PROPAGATION_REQUIRES_NEW,就一定要使用JtaTransactionManager作为事务管理器呢?
因为需要把前一个事务挂起!!! 目前只有jta事务管理器才能实现把事务挂起和恢复事务!!! 可以另取一个连接啊 required_new,当存在一个当前事务时,是会去新取得一个连接的!!!! |
|
返回顶楼 | |
发表时间:2007-05-14
当然是支持的了
methodA是在内部对methodB直接调用,他们在同一个类中,调用不能被aop拦截到 |
|
返回顶楼 | |