Spring TransactionTemplate setPropagationBehavior

时间:2011-08-31 16:45:51

标签: java database spring jdbc transactions

我想知道setPropagationBehavior到底TransactionTemplate到底是什么。谁传播给谁?我看到它有很好的文档,但我没有掌握这个PropagationBehavior的基本概念。

默认值为PROPAGATION_REQUIRED,这是什么原因?模板是否报告(传播)失败,反之亦然?

有人可以用基本方式解释这里发生了什么,我熟悉数据库术语和交易功能,ACID等。

非常感谢。

2 个答案:

答案 0 :(得分:3)

TransactionManager处理应用程序中的事务。 PropagationBehavior是一种如何告诉经理您希望交易如何表现的方法。 TransactionTemplate是一个帮助程序类,可以为您简化此操作。

必需的意思是:

1.如果调用方法已经在事务中,它将使用相同的事务

2.如果调用方法在非事务范围内,它将创建新事务

编辑:我参与了this非常好的文章处理网络应用程序spring andm多线程。我想你应该阅读it

答案 1 :(得分:2)

传播不是传播失败。 REQUIRED表示:如果已经有一个事务正在运行,那么在当前事务中进行工作(在模板回调中)。如果没有事务正在运行,请启动一个新事务,在回调中执行工作,然后提交事务(或者如果存在运行时异常则回滚事务)。

在所有情况下,运行时异常总是传播给调用者。它还会导致事务回滚,即使它未由此模板启动。