<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 167,  comments - 30,  trackbacks - 0
    在Hibernate中,對象有三種狀態(tài):臨時狀態(tài)、持久狀態(tài)和游離狀態(tài)。

          臨時狀態(tài):當(dāng)new一個實(shí)體對象后,這個對象處于臨時狀態(tài),即這個對象只是一個保存臨時數(shù)據(jù)的內(nèi)存區(qū)域,如果沒有變量引用這個對象,則會被jre垃圾回收機(jī)制回收。這個對象所保存的數(shù)據(jù)與數(shù)據(jù)庫沒有任何關(guān)系,除非通過Session的save或者SaveOrUpdate把臨時對象與數(shù)據(jù)庫關(guān)聯(lián),并把數(shù)據(jù)插入或者更新到數(shù)據(jù)庫,這個對象才轉(zhuǎn)換為持久對象。 
            例如:Emp e=new Emp();    //創(chuàng)建臨時對象 
                    e.setEmpno((long) 8888); 
                    e.setEName("mike"); 
                    ... 
                    EmpDAO d=new EmpDAO(); 
                    d.save(e);//持久化 
                     ...


           持久狀態(tài): 持久化對象的實(shí)例在數(shù)據(jù)庫中有對應(yīng)的記錄,并擁有一個持久化表示(ID)。對持久化對象進(jìn)行delete操作后,數(shù)據(jù)庫中對應(yīng)的記錄將被刪除,那么持久化對象與數(shù)據(jù)庫記錄不再存在對應(yīng)關(guān)系,持久化對象變成臨時狀態(tài)。 
            持久化對象被修改變更后,不會馬上同步到數(shù)據(jù)庫,直到數(shù)據(jù)庫事務(wù)提交。在同步之前,持久化對象是臟的(Dirty)。
                例如: 
                  Emp e=new Emp(); //創(chuàng)建了臨時的對象 
                   EmpDAO edao= new empDAO(); 
                   e=edao.findbyEmpno((long) 7786);    //使對象與數(shù)據(jù)庫記錄對應(yīng),從而持久化 
                   e.setEname("新的名字");                     //修改了持久化對象,使之處于 Dirty 
                   ...... 
                   edao.saveorupdate(e);                      //保存,但是仍然 Dirty 
                   tran.commit();                             //提交,實(shí)現(xiàn)與數(shù)據(jù)庫同步,不再Dirty 
                   ......

     

           游離狀態(tài):當(dāng)Session進(jìn)行了Close、Clear或者evict后,持久化對象雖然擁有持久化標(biāo)識符和與數(shù)據(jù)庫對應(yīng)記錄一致的值,但是因?yàn)闀捯呀?jīng)消失,對象不在持久化管理之內(nèi),所以處于游離狀態(tài)(也叫:脫管狀態(tài))。游離狀態(tài)的對象與臨時狀態(tài)對象是十分相似的,只是它還含有持久化標(biāo)識。

              其中,持久化狀態(tài)的對象,簡稱為:PO 
              而臨時狀態(tài)和游離狀態(tài)的對象,簡稱為:VO


              1、通過get()或load()方法得到的實(shí)例都是持久化狀態(tài)的。 
              2、當(dāng)把session關(guān)閉時,session緩存中的持久化對象也變成游離態(tài)

                 因關(guān)閉session而變成游離態(tài)的可以通過lock、save、update變成持久態(tài) 
              3、持久態(tài)實(shí)例可以通過調(diào)用delete()變成游離態(tài) 
                 而游離狀態(tài)的實(shí)例可以通過調(diào)用lock()或者replicate()進(jìn)行持久化 
              4、save()和persist()將會引發(fā)SQL的insert,delete()會引發(fā)SQL的delete 
                 update()或merge()會引發(fā)SQL的update,對持久化實(shí)例的修改在刷新提交的時候會

                 被檢測到, 它會引發(fā)SQL的update 
                  saveOrUpdate()或者replicate ()會引發(fā)SQL的insert或者update

    posted on 2010-08-16 09:59 David1228 閱讀(330) 評論(0)  編輯  收藏 所屬分類: Hibernate/ibatis

    <2010年8月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章檔案

    新聞分類

    新聞檔案

    相冊

    收藏夾

    Java

    Linux知識相關(guān)

    Spring相關(guān)

    云計(jì)算/Linux/虛擬化技術(shù)/

    友情博客

    多線程并發(fā)編程

    開源技術(shù)

    持久層技術(shù)相關(guān)

    搜索

    •  

    積分與排名

    • 積分 - 358630
    • 排名 - 154

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产美女福利直播秀一区二区| 99视频有精品视频免费观看| 久久综合亚洲色一区二区三区| 国产18禁黄网站免费观看| 精品无码AV无码免费专区| 中文字幕免费视频精品一| 色妞www精品视频免费看| 亚洲人成网男女大片在线播放| 亚洲av色影在线| 国产成人99久久亚洲综合精品| 国产免费变态视频网址网站| 日本最新免费网站| 99久久免费精品高清特色大片| 怡红院免费全部视频在线视频| 水蜜桃视频在线观看免费| 亚洲成AV人影片在线观看| 亚洲av午夜精品无码专区| 亚洲黄色免费电影| 亚洲国产精品自在在线观看| 日本亚洲欧洲免费天堂午夜看片女人员| 亚洲精品第一国产综合精品99| 国产在线a不卡免费视频| 精品免费国产一区二区| 24小时免费直播在线观看| 波多野结衣在线免费观看| 1000部夫妻午夜免费| 久久精品中文字幕免费| 国产猛男猛女超爽免费视频| 99久久99这里只有免费的精品| 一区二区视频免费观看| 亚洲免费视频一区二区三区| 永久免费无码网站在线观看个| 免费大片av手机看片| 色老头综合免费视频| av网站免费线看| 久久精品无码专区免费| 你好老叔电影观看免费| 久热免费在线视频| 50岁老女人的毛片免费观看| 91在线视频免费看| 成人免费毛片视频|