Seam @Transactional注释的正确用法是什么?

时间:2010-07-15 16:54:04

标签: java hibernate jpa transactions seam

我对@Transactional注释中使用的值的含义感到有点困惑,特别是@TransactionPropagationType。也许Gavin认为从每个枚举类型的名称中显而易见,并决定不记录实际含义......因为我可能不知道以下任何实际意义:强制性,永远不需要,支持。谁在那里谁?

3 个答案:

答案 0 :(得分:5)

从“Seam in Action”一书中,enum tyes表示:

REQUIRED表示执行该方法需要事务。如果是交易 未激活,Seam将开始新的交易。这是默认类型。

SUPPORTS表示允许在存在的情况下执行该方法 活动事务,但如果一个事务处于非活动状态,它将不会开始事务。

MANDATORY表示执行该方法需要活动事务。 如果事务尚未进行,则抛出运行时异常。

NEVER表示调用此方法时,事务不应处于活动状态。 如果事务处于活动状态,则抛出运行时异常。

希望这会有所帮助; - )

答案 1 :(得分:3)

这些传播类型在不同的声明式事务管理实现(EJB3,Spring和Seam)中几乎相同。奇怪的是,它们仅在javadoc in Spring中记录。

答案 2 :(得分:0)

axtavt是对的,意思与春天相同。 Seam 3的documentation更加彻底,TransactionPropagation enum is better explained