EJB 事务属性详解
1. 事务属性定义
在 EJB 中,为方法分配的事务属性决定了该方法在方法调用中对传入事务的行为。EJB 提供了以下六种事务属性,可分为需要事务和不需要事务两类:
1.1 需要事务的属性
- Mandatory :若标记此属性的方法在已有事务上下文的情况下被调用,该方法将在该事务中运行;若没有现有事务上下文,容器将抛出异常。意味着该方法若要运行,必定在事务中。
- Required :当标记此属性的方法在已有事务上下文时被调用,在该事务中运行;若无现有事务上下文,容器会开启新事务。即无论调用方法是否带有事务,该方法都会在事务中运行。
- RequiresNew :若标记此属性的方法在已有事务上下文时被调用,当前事务会被挂起,该方法在新事务中运行;若无现有事务上下文,容器开启新事务。该方法始终在新事务中运行。
1.2 不需要事务的属性
- Never :若标记此属性的方法在已有事务上下文时被调用,容器将抛出异常;若无现有事务上下文,该方法在未指定的事务上下文中运行。
- NotSupported :若标记此属性的方法在已有事务上下文时被调用,当前事务会被挂起,该方法在未指定的事务上下文中运行;若无现有事务上下文,同样在未指定的事务上下文中运行。
- Supports :若标记此