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

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

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

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

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

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

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

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

網(wǎng)友評(píng)論