C0d*_*ack 5 multithreading asynchronous hibernate
我有关于Hibernate和延迟加载的问题.
背景:我有一个Spring MVC Web应用程序,我使用Hibernate作为我的持久层.我正在使用OpenSessionInViewFilter使我能够在视图层中延迟加载实体.我正在扩展HibernateDaoSupport类并使用HibernateTemplate来保存/加载对象.一切都运作良好.到现在为止.
问题:我有一个可以通过Web请求启动的任务.当请求被路由到控制器时,控制器将为此任务创建新的Runnable并启动线程以运行任务.因此原始线程将返回并且放入ThreadLocal(通过OpenSessionInViewFilter)的Hibernate会话不可用于Task的新线程.因此,当任务执行某些数据库操作时,我会得到臭名昭着的LazyInitializationException.
任何人都可以建议我可以为任务提供Hibernate会话的最佳方法吗?
谢谢阅读.
制作Runnable一个Spring bean并添加@Transactional注释run.必须警告您,此异步任务不会在与Web请求相同的事务中运行.
请不要启动新线程,使用pooling/executor.
| 归档时间: |
|
| 查看次数: |
3560 次 |
| 最近记录: |