同步如何工作?

时间:2019-04-10 12:00:02

标签: java ejb-3.0

例如,我有@Stateless java bean:

@Stateless(mappedName = "test") 
public class Test implements ITest
{
    @Override
    public void updateActivity
      (SomeObj activity)
      throws Exception
    {
        em.persist(activity);
    } 
}

因为它是一个容器管理的bean,然后告诉我,容器何时决定将上下文与数据库同步?在这种情况下,我会立即在数据库中看到结果,但是有时它们似乎不会立即出现在数据库中,对吧?

请向我解释,在容器管理模式下,同步如何与上下文和数据库一起工作?容器何时决定将上下文与数据库同步?

1 个答案:

答案 0 :(得分:0)

这将由transaction propagation配置驱动,因为您的EJB bean可能是参与单个事务的许多托管bean之一。如果有多个交易来源正在投放中,则情况会变得更加复杂。 XA 2PC。通常,所做的更改将在事务提交时刷新到数据库中,但是当使用嵌套事务时,这进一步取决于transaction isolation levelsavepoints的存在。

检查@TransactionAttribute批注文档或寻找解释事务传播的tutorial