据我所知,它实际上是一个游泳池,一个双向阅读&写入持久JPA实体的缓存。
我认为,这是一个类的典型情况,应该是真正的线程安全,并行和可重入。
但我在网上读到,情况并非如此。 Here我甚至读过,这是 定义的情况。
为什么?
答案 0 :(得分:3)
任何人都可以阅读JPA规范,第7.2节
不能同时在多个实体管理器之间共享实体管理器 执行线程,作为实体管理器和持久化上下文 不要求线程安全。只能访问实体经理 以单线程方式。
EntityManager
是一个快速创建和处置对象,并且从最常见的请求 - 响应用例开始,在请求开始时创建EntityManager
并关闭它在最后。它不是对象的“池”,而它确实维护了它在生命周期中遇到的对象的缓存。 EntityManagerFactory是线程安全的。
PS问题不适合Stackoverflow,因为上面的“帮助”部分会告诉您。这不是“你遇到的一些问题”,而且很可能“创造讨论”。