版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人禽流感考試題及答案
- 2025九年級(jí)化學(xué)上冊(cè)第三單元物質(zhì)構(gòu)成的奧秘綜合素質(zhì)評(píng)價(jià)新版新人教版
- 輔警交通違法培訓(xùn)課件
- 2026 年初中英語《同位語從句》專題練習(xí)與解析 (100 題)
- 《GAT 591-2023法庭科學(xué) 照相設(shè)備技術(shù)條件》專題研究報(bào)告
- 2026年深圳中考語文圖文轉(zhuǎn)換專項(xiàng)試卷(附答案可下載)
- 《GAT 120-2021法庭科學(xué) 視頻圖像檢驗(yàn)術(shù)語》專題研究報(bào)告深度
- 2026年深圳中考物理學(xué)困生補(bǔ)差試卷(附答案可下載)
- 2026年大學(xué)大二(交通工程)交通管理與控制階段測(cè)試試題及答案
- 2026年深圳中考數(shù)學(xué)學(xué)困生補(bǔ)差試卷(附答案可下載)
- 黑龍江省哈爾濱市師范大學(xué)附中2026屆數(shù)學(xué)高三第一學(xué)期期末質(zhì)量檢測(cè)模擬試題含解析
- DB32/T+5311-2025+港口與道路工程+固化土施工技術(shù)規(guī)范
- DB31T+1661-2025公共區(qū)域電子屏播控安全管理要求
- 醫(yī)療聯(lián)合體兒童保健服務(wù)模式創(chuàng)新
- 2025年河南農(nóng)業(yè)大學(xué)輔導(dǎo)員考試真題
- 2026年書記員考試題庫(kù)附答案
- 中國(guó)高尿酸血癥與痛風(fēng)診療指南(2024更新版)課件
- 2025至2030中國(guó)專用車行業(yè)發(fā)展分析及投資前景與戰(zhàn)略規(guī)劃報(bào)告
- DB13∕T 6066.3-2025 國(guó)資數(shù)智化 第3部分:數(shù)據(jù)治理規(guī)范
- 2025鄭州餐飲行業(yè)市場(chǎng)深度調(diào)研及發(fā)展前景與投資前景研究報(bào)告
- 早產(chǎn)的臨床診斷與治療指南(2025年)
評(píng)論
0/150
提交評(píng)論