gpt4 book ai didi

multithreading - hibernate session 线程

转载 作者:行者123 更新时间:2023-12-04 18:14:58 25 4
gpt4 key购买 nike

我有关于 hibernate 和延迟加载的问题。

背景:
我有一个 Spring MVC Web 应用程序,我使用 Hibernate 作为我的持久层。我正在使用 OpenSessionInViewFilter 来延迟加载 View 层中的实体。我正在扩展 HibernateDaoSupport 类并使用 HibernateTemplate 来保存/加载对象。一切都运行得很好。直至现在。

问题:
我有一个可以通过网络请求启动的任务。当请求路由到一个 Controller 时, Controller 会为这个任务创建一个新的 Runnable 并启动线程来运行任务。因此,原始线程将返回,并且放置在 ThreadLocal(由 OpenSessionInViewFilter)中的 Hibernate session 对任务的新线程不可用。因此,当任务执行某些数据库操作时,我会收到臭名昭著的 LazyInitializationException。

任何人都可以建议我可以使 Hibernate session 可用于任务的最佳方式吗?

谢谢阅读。

最佳答案

让您的 Runnable一个 Spring bean 并添加 @Transactional批注结束 run .必须警告您,此异步任务不会与您的 Web 请求在同一事务中运行。

并且请不要启动新线程,使用池化/执行器。

关于multithreading - hibernate session 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5365554/

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