我有一個關於Hibernate和延遲加載的問題。休眠會話線程
背景: 我有一個Spring MVC web應用程序,我使用Hibernate作爲我的持久層。我正在使用OpenSessionInViewFilter讓我在視圖層中延遲加載實體。我擴展了HibernateDaoSupport類並使用HibernateTemplate來保存/加載對象。一切都工作得很好。到現在爲止。
問題: 我有一個任務可以通過web請求啓動。當請求被路由到控制器時,控制器將爲該任務創建一個新的Runnable並啓動該線程來運行該任務。因此,原始線程將返回,並且放置在ThreadLocal(由OpenSessionInViewFilter)中的Hibernate會話不可用於任務的新線程。所以當任務做了一些數據庫的工作時,我得到了臭名昭着的LazyInitializationException。
任何人都可以提出我可以讓Hibernate會話可用於任務的最佳方式嗎?
感謝您的閱讀。
什麼意思是不開始新的線程? – Dejell 2014-05-05 20:04:27
@Dejel可能使用[ScheduledThreadPoolExecutor](http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ScheduledThreadPoolExecutor.html)或類似的機制。 – user11153 2014-09-18 12:23:12