如果出現org.hibernate.lazyinitializationexception異常,no session orsession is closed,那是因為你使用了jpa或者hibernate的延時載入方法,並在訪問物件的時候,session已經關閉。
方式一:在:web.xml中新增filter
1:hibernate 解決( 方法(1)建立在未修改預設的sessionfactory,如修改方法(2) )
(1)
hibernatefilter
org.springframework.orm.hibernate3.support.opensessioninviewfilter
hibernatefilter
/*(2)
hibernatefilter
org.springframework.orm.hibernate3.support.opensessioninviewfilter
sessionfactorybeanname
xxsessionfactory
//預設是 sessionfactory //
xxsessionfactory為spring配置檔案中的sessionfactory對應的
//xxsessionfactory"
class
="org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean"
>
hibernatefilter
/*
2:jpa解決
(1)
springopenentitymanagerinviewfilter
org.springframework.orm.jpa.support.openentitymanagerinviewfilter
springopenentitymanagerinviewfilter
/*(參考自
jpa hibernate延遲問題解決 )
方式二:
1:jpa解決(jpa配置檔案事務的配置,service主方法加@transactional)
class="org.springframework.orm.jpa.localcontainerentitymanage***ctorybean">
datasource">
x.x.x.bo">
true
true
update
org.hibernate.dialect.oracle10gdialect
class="org.springframework.orm.jpa.jpatransactionmanager">
懶載入詳解
@onetomany(fetch=fetchtype.)的選項有,如下圖:
fetchtype.eager:代表立即載入;
fetchtype.lazy:代表延遲載入。
當我們把fetch設定為fetchtype.lazy的時候,什麼時候初始化items裡面的資料呢?當我們第一次訪問這個屬性,並對這個屬性進行操作的時候,這個集合的資料才會從資料庫裡面load出來。但要注意:當我們訪問這個延遲屬性的時候,我們的前提要entitymanager這個物件沒有被關閉,如果被關閉了我們再去訪問延遲屬性的話,就訪問不到,並丟擲延遲載入意外。
如果沒有設定fetch這屬性的話,會怎麼樣呢?是立即載入?還是延遲載入呢?
記住@onetomany這個標籤最後的英文單詞,如果是要得到many的一方,我不管你前面是什麼,只要後面的單詞是many,也就是說要得到多的一方,你們就給我記住,預設的載入策略就是延遲載入(many記錄可能上幾萬條,立即載入的話可能對效率影響大,所以延遲載入)。
反過來,如果後面是one呢?因為它是載入一的一方,這對效能影響不是很大,所以它的預設載入策略是立即載入。
orderitem這邊由哪乙個屬性去維護關係呢?是orderitem類的order屬性。
(參考自jpa 一對多延遲載入與關係維護)
待完善........
jpa hibernate分頁查詢
工具類pageutils 當前頁 private int currentpage 每頁資料條數 private int pagesize 經銷商 private dealer dealer 貸款 private loan loan 起始時間 private date starttime 終止時間 p...
JPA hibernate 主鍵生成策略
hibernate加jpa自帶一共14種。1.native id generatedvalue generator gen genericgenerator name gen strategy native 或 id generatedvalue strategy generationtype.au...
IE 下雙擊 checkbox 選中狀態延遲問題
下面 會在瀏覽器中生成乙個多選框,單擊它選中打勾,再次單擊取消打勾。type checkbox 嘗試如下操作 快速兩次單擊 雙擊 比雙擊稍慢 存在瀏覽器相容性問題。假如此時 checkbox 為選中狀態 總結 在 ie 下,雙擊 checkbox 會變成與之前相反的狀態 在非 ie 下,雙擊 che...