【发布时间】:2010-12-20 07:14:31
【问题描述】:
在 Spring Framework 手册中,他们声明对于 PROPAGATION_REQUIRES_NEW,当前事务将被暂停。
什么是“暂停交易”? 超时计时器停止计数当前事务? 这种暂停的实际含义是什么?
谢谢,
阿萨夫
【问题讨论】:
标签: mysql transactions suspend
在 Spring Framework 手册中,他们声明对于 PROPAGATION_REQUIRES_NEW,当前事务将被暂停。
什么是“暂停交易”? 超时计时器停止计数当前事务? 这种暂停的实际含义是什么?
谢谢,
阿萨夫
【问题讨论】:
标签: mysql transactions suspend
没有什么特别的意思,一个挂起的事务只是一个暂时不使用用于插入、更新、提交或回滚的事务,因为由于指定的原因应该创建一个新的事务传播属性,同时只能激活一个事务。
基本上有两种交易模型:嵌套和扁平模型。在嵌套模型中,如果您启动一个事务,并且需要另一个事务,则第一个事务保持活动状态,即第二个事务将嵌套在其父级中,依此类推。另一方面,在平面模型中,第一个事务将被暂停,也就是说,我们不会使用它,直到新的事务完成。
AFAIK 几乎只使用平面模型(包括 Spring 和 EJB 规范),因为它更容易实现:在任何给定时间只有一个活动事务,所以很容易决定在回滚的情况下要做什么,例如,由于异常。更重要的是,如果您需要嵌套模型,底层数据库必须支持它,因此平面模型在这种情况下只是共同点。
【讨论】: