何时使用 JEE JPA (EclipseLink 2.0) 提交事务?
When are transactions commited with JEE JPA (EclipseLink 2.0)?
何时使用 JPA (EclipseLink 2.0) 提交事务?
这是我的问题:
public void methodA()
{
while(something)
{
methodB();
}
}
public void methodB()
{
//Insert new client into Client table.
}
假设 methodA
需要 10 分钟才能完成。如果我在 methodA
运行时查看数据库的客户端 table,我看不到任何行。这意味着在 methodB
结束后,事务未提交。但是如果我等到 methodA
完成,那么客户端就会出现在数据库中。
我希望在 methodB
结束后提交每个事务。我该怎么做?
编辑:我希望应用程序容器 (Glassfish) 负责 "commit"。我不想通过调用实体管理器来做到这一点。我正在寻找诸如 methodB()
上方的注释之类的内容。这两种方法都在单例 bean 中。
使用@Stateless EJB bean,事务在离开 EJB 时提交(默认)。
将 methodB() 放在单独的 EJB 中。(假设 methodA() 不是 EJB)
何时使用 JPA (EclipseLink 2.0) 提交事务?
这是我的问题:
public void methodA()
{
while(something)
{
methodB();
}
}
public void methodB()
{
//Insert new client into Client table.
}
假设 methodA
需要 10 分钟才能完成。如果我在 methodA
运行时查看数据库的客户端 table,我看不到任何行。这意味着在 methodB
结束后,事务未提交。但是如果我等到 methodA
完成,那么客户端就会出现在数据库中。
我希望在 methodB
结束后提交每个事务。我该怎么做?
编辑:我希望应用程序容器 (Glassfish) 负责 "commit"。我不想通过调用实体管理器来做到这一点。我正在寻找诸如 methodB()
上方的注释之类的内容。这两种方法都在单例 bean 中。
使用@Stateless EJB bean,事务在离开 EJB 时提交(默认)。
将 methodB() 放在单独的 EJB 中。(假设 methodA() 不是 EJB)