【发布时间】:2017-04-11 21:45:33
【问题描述】:
何时使用 JPA (EclipseLink 2.0) 提交事务?
这是我的问题:
public void methodA()
{
while(something)
{
methodB();
}
}
public void methodB()
{
//Insert new client into Client table.
}
假设完成methodA 需要 10 分钟。如果在methodA 运行时查看数据库的客户端表,我将看不到任何行。这意味着在methodB 结束后,事务未提交。但是如果我等到methodA 完成,那么客户端就会出现在数据库中。
我希望在methodB 结束后提交每个事务。我该怎么做?
编辑:我希望应用程序容器(Glassfish)负责“提交”。我不想通过调用实体管理器来做到这一点。我正在寻找诸如methodB() 上方的注释之类的东西。这两种方法都在一个单例 bean 中。
【问题讨论】:
-
您将事务定义/分界放在哪里?显然,如果使用本地事务,任何人都可以调用 em.getTransaction() 并提交它
-
我不想承诺自己。我希望应用程序容器处理它(Glassfish 3.1.2.2)。
标签: java jpa transactions eclipselink commit