例如,我有@Stateless java bean:
@Stateless(mappedName = "test")
public class Test implements ITest
{
@Override
public void updateActivity
(SomeObj activity)
throws Exception
{
em.persist(activity);
}
}
因为它是一个容器管理的bean,然后告诉我,容器何时决定将上下文与数据库同步?在这种情况下,我会立即在数据库中看到结果,但是有时它们似乎不会立即出现在数据库中,对吧?
请向我解释,在容器管理模式下,同步如何与上下文和数据库一起工作?容器何时决定将上下文与数据库同步?
答案 0 :(得分:0)
这将由transaction propagation配置驱动,因为您的EJB bean可能是参与单个事务的许多托管bean之一。如果有多个交易来源正在投放中,则情况会变得更加复杂。 XA 2PC。通常,所做的更改将在事务提交时刷新到数据库中,但是当使用嵌套事务时,这进一步取决于transaction isolation level或savepoints的存在。
检查@TransactionAttribute
批注文档或寻找解释事务传播的tutorial。