在正式說hibernate延遲加載時,先說說一個比較奇怪的現(xiàn)象吧:hibernate中,在many-to-one時,如果我們設(shè)置了延遲加載,會發(fā)現(xiàn)我們在eclipse的調(diào)試框中查看one對應(yīng)對象時,它的內(nèi)部成員變量全是null的(因為這個原因我還調(diào)了好久的代碼?。?,貼張圖給你們感受下:

左邊是設(shè)置延遲加載的調(diào)試圖,右邊是沒設(shè)置延遲加載的示意圖;

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)                 平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

ok,估計大家也理解我說什么了,下面就從這個現(xiàn)象進(jìn)作為入口,闡述hibernate延遲加載背后的原理----動態(tài)代理。

一、hibernate的延遲加載與動態(tài)代理

  1、hibernate中的延遲加載:get VS load

    我們知道,在hibernate方法中,直接涉及到延遲加載的方法有g(shù)et和load,使用get時,不會延遲加載,load則反之。另外,在many-to-one等關(guān)系配置中,我們也可以通過lazy屬性設(shè)置是否延遲加載,這是我們對hibernate最直觀的認(rèn)識。

  2、現(xiàn)象解釋----動態(tài)代理機(jī)制

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式