java - 同步如何工作?

标签 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,那么告诉我,容器什么时候决定将上下文与数据库同步?在这种情况下,我立即在数据库中看到结果,但有时它们似乎并没有立即出现在那里,对吗?

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

最佳答案

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

检查@TransactionAttribute注释文档或查找 tutorial这解释了事务传播。

关于java - 同步如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55612049/

相关文章:

jakarta-ee - 在 Java EE 企业应用程序中将业务逻辑放在哪里

ejb-3.0 - Weblogic 10.3.5 和 EJB 3 JNDI 名称

java - 如何使用外部域jar打包EJB3

java - 使用 EJB3.1 登录

java - 使用 Java nio 文件,重命名目录,但如果已经存在,则将文件移动到现有目录

java - 为什么我的扫描仪仍然需要一个空格字符

java - 使用 JPA 将多行映射到 2 个实体?

java - 声明数组格式

java - StatelessSessionBean 的 dontRollbackOn

java - 基于用户输入的数组,错误?