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