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