【发布时间】:2014-10-01 17:14:18
【问题描述】:
据我所知,它实际上是一个池,是持久 JPA 实体的双向读写缓存。
我认为,这是一个真正的线程安全、并行和可重入的类的典型情况。
但我后来在网上看到,情况并非如此。 Here 我什至读到,这是by 定义的情况。
为什么?
【问题讨论】:
标签: java multithreading spring jpa orm
据我所知,它实际上是一个池,是持久 JPA 实体的双向读写缓存。
我认为,这是一个真正的线程安全、并行和可重入的类的典型情况。
但我后来在网上看到,情况并非如此。 Here 我什至读到,这是by 定义的情况。
为什么?
【问题讨论】:
标签: java multithreading spring jpa orm
任何人都可以阅读 JPA 规范,第 7.2 节
一个实体管理器不能在多个并发之间共享 执行线程,因为实体管理器和持久性上下文是 不需要是线程安全的。只能访问实体管理器 以单线程方式。
EntityManager 是一种快速创建和释放对象的方法,它遵循请求-响应的最常见用例,您在请求开始时创建EntityManager,并在结束时关闭它.它不是对象的“池”,但它确实维护了它在其生命周期中遇到的对象的缓存。 EntityManagerFactory 是线程安全的。
PS 这个问题不适合 Stackoverflow,因为上面的帮助部分会告诉你。这不是“您遇到的一些问题”,并且可能会“引发讨论”。
【讨论】: