如何在EJB中提交事务?

发布于 2024-11-17 05:52:02 字数 504 浏览 3 评论 0原文

我有以下场景,

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();
}

I have the following scenario,

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

I need to merge each object of (arr[i]) separately. as the above code will commit all the arr[i] instances at the end of the function.

I am thinking to do the following:

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();
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

路弥 2024-11-24 05:52:02

如果您想要容器管理事务,则可以使用带有值 TransactionAttributeType.REQUIRES_NEWsaveObj 方法注释为:

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

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

If you want container managed transactions, you may use the @TransactionAttribute with the value TransactionAttributeType.REQUIRES_NEW to annotate the saveObj method as:

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

This will ensure that a new transaction will be started for every invocation of the saveObj method. The existing transaction associated with the someEjbMethod will be suspended before every invocation of the saveObj method. Every transaction started for the saveObj method will be committed on return, and hence every entity will be updated in the database in it's own transaction.

未央 2024-11-24 05:52:02

您可以请求 UserTransaction,看看 这里 获取一些灵感。

You can request a UserTransaction, have a look here for some inspiration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文