我是 EJB 项目的新手。并且我试图了解在@Transactional我的 EJB 方法顶部使用注释。我搜索了内容,对此没有明确的解释。任何人都可以清楚地解释这一点。
@Transactional来自 Spring 世界,但 Oracle 最终将其包含在 Java EE 7 规范 ( docs ) 中。以前,您只能使用注释对 EJB 进行@TransactionAttribute注释,现在对于 CDI 也可以使用类似的方法,使用@Transactional. 这些注释的目的是什么?它是应用程序服务器的一个信号,表明某些类或方法是事务性的,还表明它在某些条件下的行为方式,例如,如果它在事务中被调用等。
一个例子:
@Transactional(Transactional.TxType.MANDATORY)
public void methodThatRequiresTransaction()
{
..
}
Run Code Online (Sandbox Code Playgroud)
如果不是在事务中调用,上面的方法将抛出异常。
@Transactional(Transactional.TxType.REQUIRES_NEW)
public void methodThatWillStartNewTransaction()
{
..
}
Run Code Online (Sandbox Code Playgroud)
Interceptor 将开始一个新的 JTA 事务来执行此方法,无论它是否在正在运行的事务中调用。但是,如果在事务内部调用它,则该事务将在执行此方法期间暂停。
也可以看看:
| 归档时间: |
|
| 查看次数: |
7201 次 |
| 最近记录: |