例如,我有@Stateless java bean:
@Stateless(mappedName = "test")
public class Test implements ITest
{
@Override
public void updateActivity
(SomeObj activity)
throws Exception
{
em.persist(activity);
}
}因为它是容器管理的bean,那么告诉我,容器什么时候决定将上下文与DB同步?在这种情况下,我会立即在数据库中看到结果,但有时它们似乎不会立即出现在那里,对吧?
请解释一下Container-Managed模式下的context和DB是如何进行同步的?容器何时决定将上下文与DB同步?
发布于 2019-04-10 20:22:01
这将由transaction propagation配置驱动,因为您的EJB bean可能是参与单个事务的许多托管bean之一。如果有多个事务源在运行中,例如XA 2PC,这会变得更加复杂。通常,更改将在事务提交时刷新到数据库中,但这进一步取决于使用嵌套事务时的transaction isolation level或savepoints的存在。
检查@TransactionAttribute注释文档或查找解释事务传播的tutorial。
https://stackoverflow.com/questions/55612049
复制相似问题