Hibernate中l(wèi)oad和get的兩大區(qū)別
1.讀取時機不同(當(dāng)lazy=true的時候)
Hibernate load是采用延遲機制(load語句不讀庫,等使用非主鍵時才去讀庫),而Hibernate get不采用延遲機制(get語句時馬上讀庫);
2.搜索不到數(shù)據(jù)時的情況
當(dāng)搜索的數(shù)據(jù)不存在的時候,Hibernate load依然會返回一個對象,在你使用該對象的非主鍵數(shù)據(jù)時,會拋出異常;
當(dāng)搜索的數(shù)據(jù)不存在的時候,Hibernate get會返回一個null;
備注:網(wǎng)上看來說load比get更節(jié)省資源;
我做過一個例子,即兩個線程,1號線程把數(shù)據(jù)讀出來,把session關(guān)掉。過幾秒2號線程也去讀相同的記錄,這時2號線程并沒有搜索庫(沒有顯示出HQL語句),不管你用load還是get。
結(jié)論:我覺得它們兩個都有使用到緩存,至于更深入的我沒有去研究了。
【編輯推薦】