Muh*_*edy 0 java ejb transactions
我有以下场景,
public void someEjbMethod1()
{
for (int i=0; i=10; i++)
{
em.merge(arr[i]);
em.flush();
}
}
Run Code Online (Sandbox Code Playgroud)
我需要分别合并 ( arr[i]) 的每个对象。因为上面的代码将arr[i]在函数末尾提交所有实例。
我正在考虑执行以下操作:
public void someEjbMethod1()
{
for (int i=0; i=10; i++)
{
saveObj(arr[i]);
}
}
// should I use a transaction attribute here??
public void saveObj(SomeObject obj)
{
em.merge(arr[i]);
em.flush();
}
Run Code Online (Sandbox Code Playgroud)
如果需要容器管理的事务,可以使用值为TransactionAttributeType.REQUIRES_NEW的 @TransactionAttribute 将该saveObj方法注释为:
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void saveObj(SomeObject obj)
{
...
}
Run Code Online (Sandbox Code Playgroud)
这将确保每次调用该saveObj方法都会启动一个新事务。与 关联的现有事务someEjbMethod将在每次调用该saveObj方法之前暂停。为该saveObj方法启动的每个事务都将在返回时提交,因此每个实体都将在其自己的事务中的数据库中更新。
| 归档时间: |
|
| 查看次数: |
11568 次 |
| 最近记录: |