最近在做乙個專案,資料持久層這塊用了hibernate。之前學過後就沒怎麼用過,一直在用ibatis。在整合spring security的時候碰到了「no session,or session was closed」,因此在網上找找好的解決方案。
現在一般比較常用的應該就是配置opensessioninview了,但是這個東西對效能的損耗感覺太大了,因為畢竟需要用到延遲載入的那些資料的時候並不多,可以說很少。就為了這個而把所有的所有的session保持到頁面請求結束,是得不償失的。
我們配置延遲載入的目的就是為了優化效能,在需要的時候去查詢資料,不需要的時候就不去查詢。出現「no session,or session was closed」這種錯誤的時候應該就是我們需要這些資料,而這些資料為空的時候。那在session關閉前讓hibernate獲取這些資料不就可以了嗎。我們一般將業務邏輯寫在service中,在service中呼叫dao的方法,給service的方法配置事物。
應此,我們可以service的方法裡面控制hibernate,讓其載入資料。
比如:public secuser getuserwithrole(string username)
return user;
}這樣便可以簡單的避免session關閉的異常,而且不會影響hibernate對session的管理。
以上是一些個人的想法,如果有問題請各位大俠拍磚指正。
hibernate延遲載入
在hibernate應用中,有時候只訪問指定的持久化物件,在載入該物件時沒有必要載入其關聯的物件,以免浪費記憶體空間,但若想在session關閉後正常訪問該物件,必須在載入該物件時,一起載入該物件的關聯物件,為了滿足檢索持久化物件的不同情況的需求,開發靈活高效的hibernate應用,hiberna...
Hibernate中的延遲載入
最近因為給新員工寫例子用到hibernate,才發現自己對hibernate的理解也非常有限啊.複雜的hql語言我寫不出來,還遇到了很多詭異的問題.在寫例子的過程中最困擾我的是hibernate的延遲載入特性.眾所周知,到了hibernate3.0以後,關聯關係的物件預設都是使用延遲載入,例如時.但...
Hibernate的延遲載入問題
一 延遲載入及作用?延遲載入又叫懶載入。是指在訪問資料時,當資料用到的時候才被載入,沒有被用到的時候不載入。二 這樣做有什麼好處呢?好處就是每次訪問資料的時候,因為只載入需要的資料,這樣就可以降低資料庫以及記憶體壓力。雖然說有時候整體的資料量並不多,但是這是一種機制,當資料量比較大的時候,對整體專案...