【问题标题】:Why the JPA EntityManager isn't thread-safe by definition?为什么 JPA EntityManager 根据定义不是线程安全的?
【发布时间】:2014-10-01 17:14:18
【问题描述】:

据我所知,它实际上是一个池,是持久 JPA 实体的双向读写缓存。

我认为,这是一个真正的线程安全、并行和可重入的类的典型情况。

但我后来在网上看到,情况并非如此。 Here 我什至读到,这是by 定义的情况。

为什么?

【问题讨论】:

    标签: java multithreading spring jpa orm


    【解决方案1】:

    任何人都可以阅读 JPA 规范,第 7.2 节

    一个实体管理器不能在多个并发之间共享 执行线程,因为实体管理器和持久性上下文是 不需要是线程安全的。只能访问实体管理器 以单线程方式。

    EntityManager 是一种快速创建和释放对象的方法,它遵循请求-响应的最常见用例,您在请求开始时创建EntityManager,并在结束时关闭它.它不是对象的“池”,但它确实维护了它在其生命周期中遇到的对象的缓存。 EntityManagerFactory 是线程安全的。

    PS 这个问题不适合 Stackoverflow,因为上面的帮助部分会告诉你。这不是“您遇到的一些问题”,并且可能会“引发讨论”。

    【讨论】:

      猜你喜欢
      • 2012-11-20
      • 2013-10-11
      • 2020-10-10
      • 1970-01-01
      • 2020-11-26
      • 2021-07-12
      • 2016-08-14
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多