我是EJB Projects的新手。我试图在EJB方法的顶部理解@Transactional
注释的用法。我搜索了内容,但没有明确的解释。任何人都可以清楚地解释这一点。
答案 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事务,无论是否在正在运行的事务中调用它。但是,如果在事务内部调用它,则在执行此方法期间将暂停该事务。
另见: