Har*_*n F 4 java java-ee ejb-3.0
JBoss 4.x
EJB 3.0
我见过如下代码(大大缩写):
@Stateless
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class EJB1 implements IEJB1
{
@EJB
private IEJB1 self;
@EJB
private IEJB2 ejb2;
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public boolean someMethod1()
{
return someMethod2();
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public boolean someMethod2()
{
return self.someMethod3();
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public boolean someMethod3()
{
return ejb2.someMethod1();
}
}
Run Code Online (Sandbox Code Playgroud)
并且说EJB2几乎是EJB1(相同的三种方法)的精确副本,并且EJB2.someMethod3()调用EJB3.someMethod1(),然后最终EJB3.someMethod3()写入DB.
这是一个人为的例子,但在我们的代码库中看到了类似的代码.代码实际上工作得很好.
然而,这感觉就像一个糟糕的做法,我担心@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)每个方法甚至没有实际执行任何数据库写入.这是否实际上每次为每个方法调用创建一个新事务,结果为:
new transaction
-new transaction
--new transaction
--- new transaction
...(更多)
------- new transaciton(DB write)
然后在那时解开?这会不会引起性能问题?额外的想法?
| 归档时间: |
|
| 查看次数: |
7436 次 |
| 最近记录: |