使用持久對(duì)象ppt課件_第1頁
使用持久對(duì)象ppt課件_第2頁
使用持久對(duì)象ppt課件_第3頁
使用持久對(duì)象ppt課件_第4頁
使用持久對(duì)象ppt課件_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、幻燈片幻燈片1(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B第三章使用持久對(duì)象幻燈片幻燈片2(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B持久對(duì)象 Hibernate被稱為持久層框架。其主要維護(hù)了一個(gè)包含有許多session的容器或者說是“池”)。在這個(gè)容器中,維護(hù)了很多的持久對(duì)象實(shí)體對(duì)象)。 對(duì)實(shí)體對(duì)象生命周期的理解和把握,不僅對(duì)正確使用hibernate十分有益,而且對(duì)hibernate的實(shí)現(xiàn)原理的探索也極具意義。幻燈片幻燈片3(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B對(duì)象狀態(tài) 瞬態(tài): 即實(shí)體對(duì)象在內(nèi)存中自由存在,與數(shù)據(jù)庫(kù)中的記錄沒

2、有任何關(guān)系。這里的user對(duì)象,和數(shù)據(jù)庫(kù)沒有任何關(guān)系public void fun()Tuser user = new Tuser();user.setName(“Tom”);幻燈片幻燈片4(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B對(duì)象狀態(tài) 持久態(tài) 即實(shí)體對(duì)象處在Hibernate框架所管理的狀態(tài)。 這種狀態(tài)下,實(shí)體對(duì)象的引用被納入Hibernate實(shí)體容器里加以管理。 處于持久狀態(tài)的對(duì)象,其變更都會(huì)由Hibernate固化到數(shù)據(jù)庫(kù)。幻燈片幻燈片5(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B對(duì)象狀態(tài) 游離態(tài) 處于持久狀態(tài)的對(duì)象,對(duì)應(yīng)的session實(shí)例

3、關(guān)閉之后,那么,此對(duì)象就處于游離狀態(tài) session實(shí)例可以看成是持久對(duì)象的宿主,一旦宿主失效,那么其從屬的持久對(duì)象即進(jìn)入游離狀態(tài)?;脽羝脽羝?(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B對(duì)象狀態(tài) 一個(gè)對(duì)象能從一個(gè)暫時(shí)對(duì)象轉(zhuǎn)變?yōu)橐粋€(gè)持久對(duì)象在轉(zhuǎn)變?yōu)橐粋€(gè)游離對(duì)象幻燈片幻燈片7(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B持久態(tài) 例如:Tuser user = new Tuser();user.setName(“Jack”);/此時(shí)處于瞬態(tài)此時(shí)處于瞬態(tài)Transaction tx = session.beginTransaction();session.sa

4、ve(user);/由由save方法,納入容器中,處于持久狀態(tài)方法,納入容器中,處于持久狀態(tài)txmit();/提交之后,由容器固化到數(shù)據(jù)庫(kù),插入記錄提交之后,由容器固化到數(shù)據(jù)庫(kù),插入記錄Transaction tx2 = session.beginTransaction();user.setName(“Rose”);/此時(shí),此時(shí),user依舊處于持久狀態(tài)依舊處于持久狀態(tài)tx2mit();/雖然沒有使用雖然沒有使用save方法,但是由于方法,但是由于user處于處于/持久狀態(tài),持久狀態(tài),tx2提交之后,數(shù)據(jù)庫(kù)發(fā)生提交之后,數(shù)據(jù)庫(kù)發(fā)生Update幻燈片幻燈片8(共共13張張)介紹幻燈片介紹幻燈片V

5、er. 1.0學(xué)期學(xué)期 B持久態(tài) 示例2:/由由hibernate返回的持久狀態(tài)返回的持久狀態(tài)Tuser user = (Tuser)session.load(Tuser.class,new Integer(1);/使用使用session.load方法中,在返回對(duì)象之前,方法中,在返回對(duì)象之前,Hibernate已經(jīng)將其納入已經(jīng)將其納入/容器中,這里的容器中,這里的user處于持久狀態(tài)處于持久狀態(tài)如果一個(gè)實(shí)體對(duì)象與某個(gè)如果一個(gè)實(shí)體對(duì)象與某個(gè)session發(fā)生了關(guān)聯(lián),發(fā)生了關(guān)聯(lián),并處于對(duì)應(yīng)并處于對(duì)應(yīng)session的有效期內(nèi),那么它就是持久狀態(tài)的有效期內(nèi),那么它就是持久狀態(tài)幻燈片幻燈片9(共共13

6、張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B游離態(tài) 例子1:Tuser user = new Tuser();user.setName(“Jack”);/此時(shí)處于自由狀態(tài)此時(shí)處于自由狀態(tài) Transaction tx = session.beginTransaction();session.save(user);/由由save方法,納入容器中,處于持久狀態(tài)方法,納入容器中,處于持久狀態(tài)txmit();/提交之后,由容器固化到數(shù)據(jù)庫(kù),插入記錄提交之后,由容器固化到數(shù)據(jù)庫(kù),插入記錄session.close();/此時(shí)的此時(shí)的user對(duì)象處于游離狀態(tài),因?yàn)榕c其對(duì)象處于游離狀態(tài),因?yàn)榕c其/

7、關(guān)聯(lián)的關(guān)聯(lián)的session已經(jīng)關(guān)閉已經(jīng)關(guān)閉幻燈片幻燈片10(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B游離態(tài) 例子2:Tuser user = new Tuser();user.setName(“Jack”);/此時(shí)處于瞬態(tài)此時(shí)處于瞬態(tài)Transaction tx = session.beginTransaction();session.save(user);/由由save方法,納入容器中,處于持久狀態(tài)方法,納入容器中,處于持久狀態(tài)txmit();/提交之后,由容器固化到數(shù)據(jù)庫(kù),插入記錄提交之后,由容器固化到數(shù)據(jù)庫(kù),插入記錄session.close();/此時(shí)的此時(shí)的us

8、er對(duì)象處于游離狀態(tài),因?yàn)榕c其對(duì)象處于游離狀態(tài),因?yàn)榕c其/關(guān)聯(lián)的關(guān)聯(lián)的session已經(jīng)關(guān)閉已經(jīng)關(guān)閉Transaction tx2 = session2.beginTransaction();session2.update(user);/此時(shí),處于游離狀態(tài)的此時(shí),處于游離狀態(tài)的user對(duì)象借助對(duì)象借助/session2再次納入再次納入hibernate容器內(nèi)容器內(nèi)user.setName(“Rose”);tx2mit();/user再次處于持久狀態(tài),因?yàn)槠鋵傩园l(fā)生再次處于持久狀態(tài),因?yàn)槠鋵傩园l(fā)生/變卦,將自動(dòng)由變卦,將自動(dòng)由hibernate固化到數(shù)據(jù)庫(kù)中固化到數(shù)據(jù)庫(kù)中幻燈片幻燈片11(共共1

9、3張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B游離態(tài) 由上例可知,瞬態(tài)對(duì)象和游離狀態(tài)對(duì)象,最大的區(qū)別是:游離對(duì)象可以再次和某個(gè)session實(shí)例關(guān)聯(lián),而成為持久對(duì)象?;脽羝脽羝?2(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B持久對(duì)象-主鍵 session.save執(zhí)行后,Hibernate對(duì)user對(duì)象進(jìn)行了持久化,并為其賦予了主鍵值。 主鍵被我們?cè)O(shè)置為自動(dòng)增長(zhǎng)型。并交由Hibernate容器管理。 Hibernate就按照實(shí)體對(duì)象的id來識(shí)別,并標(biāo)識(shí)每個(gè)實(shí)體對(duì)象和數(shù)據(jù)庫(kù)表中記錄間的聯(lián)系幻燈片幻燈片13(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期

10、 B瞬態(tài)和游離態(tài)對(duì)象的識(shí)別 瞬態(tài)的對(duì)象,與數(shù)據(jù)庫(kù)表中的記錄缺乏對(duì)應(yīng)關(guān)系。(由于缺乏主鍵) 游離狀態(tài)的對(duì)象,在數(shù)據(jù)庫(kù)表中存在相對(duì)應(yīng)的記錄由主鍵唯一標(biāo)識(shí)),只不過游離對(duì)象脫離了session這個(gè)平臺(tái),其狀態(tài)的變更無法更新到數(shù)據(jù)庫(kù)中。瞬態(tài)的對(duì)象,無主鍵信息。瞬態(tài)的對(duì)象,無主鍵信息。游離狀態(tài)的對(duì)象,包含了其對(duì)應(yīng)數(shù)據(jù)庫(kù)記錄的主鍵值游離狀態(tài)的對(duì)象,包含了其對(duì)應(yīng)數(shù)據(jù)庫(kù)記錄的主鍵值幻燈片幻燈片14(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B三種狀態(tài)的轉(zhuǎn)換持久持久態(tài)態(tài)游離游離態(tài)態(tài)持久持久態(tài)態(tài)瞬態(tài)瞬態(tài)幻燈片幻燈片15(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 B實(shí)體對(duì)象識(shí)別

11、既然,識(shí)別實(shí)體對(duì)象的三種狀態(tài)如此重要,Hibernate又是通過比較兩個(gè)對(duì)象的主鍵屬性來識(shí)別每個(gè)對(duì)象的,那么在實(shí)體類里面,如何定義對(duì)象的比較方法,就很重要了?;脽羝脽羝?6(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 BVO與PO 自由和游離狀態(tài)的對(duì)象統(tǒng)稱為VO(值對(duì)象) 處于持久狀態(tài)的對(duì)象稱為PO(持久對(duì)象) 應(yīng)該避免直接將PO傳遞到系統(tǒng)中的其他層面(MVC) 解決方法之一,創(chuàng)建一個(gè)新的VO使他具有與被傳遞VO相同的屬性值。(可借助工具)幻燈片幻燈片17(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 Bequalspublic boolean equals(Object rhs) if (rhs = null) return false; if (! (rhs instanceof Stu) return false; Stu that = (Stu) rhs; if (this.getStuId() = null | that.getStuId() = null) return false; return (this.getStuId().equals(that.getStuId(); 幻燈片幻燈片18(共共13張張)介紹幻燈片介紹幻燈片Ver. 1.0學(xué)期學(xué)期 BhashCode public int hashCode() if (this

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論