@Transactional注释有什么用?

时间:2015-04-20 07:41:39

标签: ejb transactional

我是EJB Projects的新手。我试图在EJB方法的顶部理解@Transactional注释的用法。我搜索了内容,但没有明确的解释。任何人都可以清楚地解释这一点。

1 个答案:

答案 0 :(得分:4)

@Transactional来自Spring世界,但Oracle最终将其包含在Java EE 7规范(docs)中。以前,您只能使用@TransactionAttribute注释来注释EJB,现在也可以使用@Transactional对CDI进行类似注释。这些注释的目的是什么?它是应用服务器的信号,某些类或方法是事务性的,也指示它将如何在某些条件下运行,例如,如果在交易中调用它等等。

一个例子:

@Transactional(Transactional.TxType.MANDATORY)
public void methodThatRequiresTransaction()
{
..
}

如果未在事务中调用,则上述方法将抛出异常。

@Transactional(Transactional.TxType.REQUIRES_NEW)
public void methodThatWillStartNewTransaction()
{
..
}

Interceptor将开始执行此方法的新JTA事务,无论是否在正在运行的事务中调用它。但是,如果在事务内部调用它,则在执行此方法期间将暂停该事务。

另见: