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

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

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

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

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

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

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

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

網(wǎng)友評論