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