gpt4 book ai didi

java - 是否为每个方法调用创建一个 EclipseLink EntityManager 或用锁保护?

转载 作者:太空宇宙 更新时间:2023-11-04 07:30:08 25 4
gpt4 key购买 nike

我应该为每个方法调用创建一个 EclipseLink EntityManager,存储在线程本地还是用锁保护?

显然它最初是从entityManagerFactory.createEntityManager()创建的。

请问哪个是最佳实践?

对于每个方法调用,我关心的是性能。

对于本地线程,我担心线程之间的缓存可见性。

通过用锁保护单个 EntityManager,我每次都有锁的成本。

/我正在使用 JSE - 因此没有 EJB,没有注入(inject) - 只是多线程 JSE 应用程序中的entityManagerFactory.createEntityManager()。

谢谢

最佳答案

EntityManager 不是线程安全的,旨在表示一个工作单元。每个方法/线程都应该有自己的,除非参与更大的事务。最好在逻辑点关闭/清除它们,因为它们维护托管实体的缓存,这些实体可以随着长期存在的 EntityManager 的增长而变大。有很多帖子讨论了容器外部和内部的最佳方法。

EclipseLink的EntityManager使用EclipseLink的 native session 和底层的unitOfWork,它将根据需要延迟获取资源,并在完成时释放它们。但它们可以配置为以不同的方式运行。

关于java - 是否为每个方法调用创建一个 EclipseLink EntityManager 或用锁保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17855753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com