我對Spring很新,我想了解更多有關會話的內容。我已經使用Hibernate註釋過的實體映射了遺留數據庫,並構建了一些服務對象來提取,檢索等。我的實體還包含其他實體(通過外鍵映射)和實體集。當我在我的服務中遍歷entitiy圖時,我沒有問題。我的服務被包裝在一個TransactionProxyFactoryBean中,所以一切都應該很好。Spring中的數據庫會話
因此,在我的視圖控制器中,我從服務請求了一堆實體。但是當我遍歷我的視圖控制器中的實體圖形(例如顯示用戶狀態的國家名稱,州和國家都是懶惰加載的實體)時,Hibernate會話已經關閉,我得到一個「LazyInitializationException:無法初始化代理 - 沒有會話「
我不希望我的服務急於獲取數據,這將消耗多少內存,因爲我的圖形很深,甚至可以有循環引用。我也不想明確地觸及我將在服務中顯示的部分,因爲這意味着我必須一遍又一遍地複製/粘貼類似的服務。所以我想要的是當我在視圖控制器中時,Hibernate會話仍然打開,並且在視圖被提供之前不關閉會話。我可以做些什麼來保持它的開放?
我的視圖bean看起來像這樣,有沒有什麼辦法可以將我的TransactionProxyFactoryBean派生的bean注入它?
<bean name="/" class="example.SimpleViewController">
<property name="userService" ref="userService"/>
<property name="catalogService" ref="catalogService"/>
</bean>
乾杯
聶
非常常見的問題。在過濾器中打開會話是要走的路。 – 2009-08-25 20:01:33