版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三章使用持久對象持久對象Hibernate被稱為持久層框架。其主要維護了一個包含有許多session的容器(或者說是“池”)。在這個容器中,維護了很多的持久對象(實體對象)。對實體對象生命周期的理解和把握,不僅對正確使用hibernate十分有益,而且對hibernate的實現(xiàn)原理的探索也極具意義。對象狀態(tài)瞬態(tài):即實體對象在內(nèi)存中自由存在,與數(shù)據(jù)庫中的記錄沒有任何關(guān)系。這里的user對象,和數(shù)據(jù)庫沒有任何關(guān)系public void fun()Tuser user = new Tuser();user.setName(“Tom”);對象狀態(tài)持久態(tài)即實體對象處在Hibernate框架所管理的狀態(tài)
2、。這種狀態(tài)下,實體對象的引用被納入Hibernate實體容器里加以管理。處于持久狀態(tài)的對象,其變更都會由Hibernate固化到數(shù)據(jù)庫。對象狀態(tài)游離態(tài)處于持久狀態(tài)的對象,對應(yīng)的session實例關(guān)閉之后,那么,此對象就處于游離狀態(tài)session實例可以看成是持久對象的宿主,一旦宿主失效,那么其從屬的持久對象即進入游離狀態(tài)。對象狀態(tài)一個對象能從一個暫時對象轉(zhuǎn)變?yōu)橐粋€持久對象在轉(zhuǎn)變?yōu)橐粋€游離對象持久態(tài)示例:Tuser user = new Tuser();user.setName(“Jack”);/此時處于瞬態(tài)Transaction tx = session.beginTransaction();
3、session.save(user);/由save方法,納入容器中,處于持久狀態(tài)mit();/提交之后,由容器固化到數(shù)據(jù)庫,插入記錄Transaction tx2 = session.beginTransaction();user.setName(“Rose”);/此時,user依舊處于持久狀態(tài)mit();/雖然沒有使用save方法,但是由于user處于/持久狀態(tài),tx2提交之后,數(shù)據(jù)庫發(fā)生Update持久態(tài)示例2:/由hibernate返回的持久狀態(tài)Tuser user = (Tuser)session.load(Tuser.class,new Integer(1);/使用session.l
4、oad方法中,在返回對象之前,Hibernate已經(jīng)將其納入/容器中,這里的user處于持久狀態(tài)如果一個實體對象與某個session發(fā)生了關(guān)聯(lián),并處于對應(yīng)session的有效期內(nèi),那么它就是持久狀態(tài)游離態(tài)例子1:Tuser user = new Tuser();user.setName(“Jack”);/此時處于自由狀態(tài) Transaction tx = session.beginTransaction();session.save(user);/由save方法,納入容器中,處于持久狀態(tài)mit();/提交之后,由容器固化到數(shù)據(jù)庫,插入記錄session.close();/此時的user對象處于
5、游離狀態(tài),因為與其/關(guān)聯(lián)的session已經(jīng)關(guān)閉游離態(tài)例子2:Tuser user = new Tuser();user.setName(“Jack”);/此時處于瞬態(tài)Transaction tx = session.beginTransaction();session.save(user);/由save方法,納入容器中,處于持久狀態(tài)mit();/提交之后,由容器固化到數(shù)據(jù)庫,插入記錄session.close();/此時的user對象處于游離狀態(tài),因為與其/關(guān)聯(lián)的session已經(jīng)關(guān)閉Transaction tx2 = session2.beginTransaction();session2
6、.update(user);/此時,處于游離狀態(tài)的user對象借助/session2再次納入hibernate容器內(nèi)user.setName(“Rose”);mit();/user再次處于持久狀態(tài),因為其屬性發(fā)生/變更,將自動由hibernate固化到數(shù)據(jù)庫中游離態(tài)由上例可知,瞬態(tài)對象和游離狀態(tài)對象,最大的區(qū)別是:游離對象可以再次和某個session實例關(guān)聯(lián),而成為持久對象。持久對象-主鍵session.save執(zhí)行后,Hibernate對user對象進行了持久化,并為其賦予了主鍵值。主鍵被我們設(shè)置為自動增長型。并交由Hibernate容器管理。Hibernate就按照實體對象的id來識別,并
7、標識每個實體對象和數(shù)據(jù)庫表中記錄間的聯(lián)系瞬態(tài)和游離態(tài)對象的識別瞬態(tài)的對象,與數(shù)據(jù)庫表中的記錄缺乏對應(yīng)關(guān)系。(由于缺乏主鍵)游離狀態(tài)的對象,在數(shù)據(jù)庫表中存在相對應(yīng)的記錄(由主鍵唯一標識),只不過游離對象脫離了session這個平臺,其狀態(tài)的變更無法更新到數(shù)據(jù)庫中。瞬態(tài)的對象,無主鍵信息。游離狀態(tài)的對象,包含了其對應(yīng)數(shù)據(jù)庫記錄的主鍵值三種狀態(tài)的轉(zhuǎn)換持久態(tài)游離態(tài)持久態(tài)瞬態(tài)實體對象識別既然,識別實體對象的三種狀態(tài)如此重要,Hibernate又是通過比較兩個對象的主鍵屬性來識別每個對象的,那么在實體類里面,如何定義對象的比較方法,就很重要了。VO與PO自由和游離狀態(tài)的對象統(tǒng)稱為VO(值對象)處于持久狀態(tài)
8、的對象稱為PO(持久對象)應(yīng)該避免直接將PO傳遞到系統(tǒng)中的其他層面(MVC)解決方法之一,創(chuàng)建一個新的VO使他具有與被傳遞VO相同的屬性值。(可借助工具)equalspublic 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(); hashCode public int hashCode() if (this.hashValue = 0) int result = 17; int stuIdValue = this.ge
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025Oracle云計算服務(wù)安全合規(guī)性與風(fēng)險管理合同2篇
- 二零二五年店面租賃與產(chǎn)品研發(fā)合同3篇
- 二零二五年度二手車買賣交易安全保障合同模板2篇
- 2024年電商平臺合作運營合同
- 產(chǎn)品碳標識認證的市場需求與挑戰(zhàn)
- 2025版醫(yī)療影像設(shè)備租賃與售后服務(wù)合同2篇
- 2024提成協(xié)議書模板(新媒體運營)3篇
- 二零二五年度光纖寬帶網(wǎng)絡(luò)升級改造工程合同3篇
- 2024年打擊樂器行業(yè)市場全景監(jiān)測及投資前景展望報告
- 2024年設(shè)備銷售合同三方價格調(diào)整協(xié)議3篇
- 職業(yè)指導(dǎo)師四級-一-真題-無答案
- 單人心肺復(fù)蘇操作評分標準
- 110kv輸電線路工程施工組織設(shè)計
- 立法學(xué)(第五版)課件 第9-16章 立法程序-立法語言
- 10kv保護整定計算
- 清華大學(xué)王曉毅-《道德經(jīng)》智慧
- 山東青島2021年中考語文現(xiàn)代文閱讀真題
- 江蘇省海安市2022-2023學(xué)年八年級上學(xué)期期末考試語文試卷圖片版無答案
- 教育心理學(xué)全套課件(燕良軾)
- 骨筋膜室綜合征病人的觀察及護理
- 醫(yī)學(xué)倫理學(xué)-南方醫(yī)科大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
評論
0/150
提交評論