首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您如何看待在实现每个请求的会话模式时,在每个thred执行中清除持久化上下文?

您如何看待在实现每个请求的会话模式时,在每个thred执行中清除持久化上下文?
EN

Stack Overflow用户
提问于 2012-01-19 19:55:07
回答 1查看 63关注 0票数 1

当您使用JPA并实现session-per-request模式(线程意义上的范围transaction )时,是否经常需要在每个事务结束时清除持久性上下文?在我的例子中,我这样做是因为我将创建的实体管理器保存在ThreadLocal的实例中,所以当我在每个线程中使用一个相同的EntityManager实例时。但有时,当用户执行新请求时,ThreadLocal会返回一个旧的持久性容器,其中包含旧的持久性数据。考虑到对可伸缩性和性能的非功能性需求,您认为我的解决方案是合理的吗?

提前感谢各位,并致以最好的问候,西蒙

EN

回答 1

Stack Overflow用户

发布于 2012-01-19 21:12:39

如果您在新请求中具有陈旧的持久性上下文,则说明您错误地实现了每个请求的会话模式。

在处理完请求后,您需要关闭EntityManager并将其从ThreadLocal中移除。如果这样做,您将不需要调用clear() (除了实际需要它的情况,例如,大规模批处理操作)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8925619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档