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