Hibernate懶加載異常

在SSH框架組合作開發時,往往都會遇到需要延遲加載的情況.

在使用spring提供的HibernateDaoSupport和HibernateTemplate時在業務bean調用DAO bean時遇到懶加載問題:session已關閉。

大概有三種解決方法:

1.直接不適用懶加載:lazy="false",這是相當XX的做法,如果確實需要懶加載,這顯然是不能解決問題滴。

 

2.OpenSessionInViewFilter或者OpenSessionInViewInterceptor,正如名字所示,這是解決在view層裏調用dao層的出現的懶加載問題的方法。其目的是給web request提供單一的hibernate session,但是它也只能給web request提供hibernate session。它會過濾所有指定的web request,並提供持續的session連接。

 

3.HibernateInterceptor 如果有某一個hibernate請求不是經由web request發起的,而是由quartz這樣的定時任務發起的,那麼quartz怎麼樣才能得到hibernate session呢?解決辦法就是使用HibernateInterceptor。也就是說不是通過控制(過濾)web請求來實現的,更靈活,個人覺得比前兩種好。

/WEB-INF/applicationContext.xml配置例子如下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章