【发布时间】:2019-08-31 21:10:58
【问题描述】:
例如我有@Stateless java bean:
@Stateless(mappedName = "test")
public class Test implements ITest
{
@Override
public void updateActivity
(SomeObj activity)
throws Exception
{
em.persist(activity);
}
}
因为它是一个容器管理的bean,那么告诉我,容器什么时候决定将上下文与数据库同步?在这种情况下,我会立即在数据库中看到结果,但有时它们似乎不会立即出现在那里,对吧?
请解释一下,在容器管理模式下,同步如何与上下文和数据库一起工作?容器何时决定将上下文与数据库同步?
【问题讨论】:
-
你想说在这种情况下它总是会立即保存在数据库中?
-
我想说这取决于您的事务范围和您查看数据库的方法。如果事务是容器管理的,一旦事务提交,它将在您的数据库中持久存在。在容器管理的情况下,这是您对容器的调用退出的时候。如果您使用 READ UNCOMMITED 查看数据库并打开 READ UNCOMMITED,您甚至会看到尚未提交的更改。
-
@cmoetzing “一旦事务提交” 什么时候?什么时候提交?容器何时决定将对象提交给数据库? (如果类和方法没有 TransactionAttribute 注释?)
-
@cmoetzing 对不起,你是什么意思? (“在容器管理的情况下,这是您对容器的调用退出时”)我不明白,对不起..