gpt4 book ai didi

java - 如何在EJB中提交事务?

转载 作者:行者123 更新时间:2023-12-01 17:35:51 25 4
gpt4 key购买 nike

我有以下情况,

public void someEjbMethod1()
{
for (int i=0; i=10; i++)
{
em.merge(arr[i]);
em.flush();
}
}

我需要分别合并 (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();
}

最佳答案

如果您想要容器管理事务,您可以使用值TransactionAttributeType.REQUIRES_NEW的@TransactionAttribute。将 saveObj 方法注释为:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void saveObj(SomeObject obj)
{
...
}

这将确保每次调用 saveObj 方法时都会启动一个新事务。与 someEjbMethod 关联的现有事务将在每次调用 saveObj 方法之前挂起。为 saveObj 方法启动的每个事务都将在返回时提交,因此每个实体都将在其自己的事务中在数据库中更新。

关于java - 如何在EJB中提交事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6483812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com