三大框架hibernate深入_第1頁
三大框架hibernate深入_第2頁
三大框架hibernate深入_第3頁
三大框架hibernate深入_第4頁
三大框架hibernate深入_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

北京傳智播客教育hibernate(深入)講師:趙君北京傳智播客教育

映射一對一多對多

[雙向]關(guān)聯(lián)關(guān)系北京傳智播客教育建立一對多的雙向關(guān)聯(lián)關(guān)系在hibernate中通過對inverse屬性的值決定是由雙向關(guān)聯(lián)的哪一方來維護(hù)表和表之間的關(guān)系.inverse=false的為主動方,inverse=true的為被動方,由主動方負(fù)責(zé)維護(hù)關(guān)聯(lián)關(guān)系在沒有設(shè)置inverse=true的情況下,父子兩邊都維護(hù)父子關(guān)系

在1-n關(guān)系中,將n方設(shè)為主控方將有助于性能改善(如果要國家元首記住全國人民的名字,不是太可能,但要讓全國人民知道國家元首,就容易的多)在1-N關(guān)系中,若將1方設(shè)為主控方會額外多出update語句。知識點1:<set>中inverse屬性(反轉(zhuǎn))北京傳智播客教育映射一對一雙向關(guān)聯(lián)關(guān)系一對一關(guān)聯(lián)指兩個表之間的記錄是一一對應(yīng)的關(guān)系。比如一家公司(Company)和它所在的地址(Address)。在業(yè)務(wù)邏輯中要求一家公司只有唯一的地址,一個地址也只有一家公司。下圖表現(xiàn)為外鍵關(guān)聯(lián)關(guān)系。fk北京傳智播客教育映射一對一雙向關(guān)聯(lián)關(guān)系對于基于外鍵的1-1關(guān)聯(lián),其外鍵可以存放在任意一邊,在需要存放外鍵一端,增加many-to-one元素。為many-to-one元素增加unique=“true”

屬性來表示為1-1關(guān)聯(lián),并用name屬性來指定關(guān)聯(lián)屬性的屬性名另一端需要使用one-to-one元素,該元素使用property-ref

屬性指定使用被關(guān)聯(lián)實體主鍵以外的字段作為關(guān)聯(lián)字段北京傳智播客教育映射一對一雙向關(guān)聯(lián)關(guān)系北京傳智播客教育映射一對一雙向關(guān)聯(lián)關(guān)系北京傳智播客教育映射多對多雙向關(guān)聯(lián)關(guān)系

多對多的實體關(guān)系模型也是很常見的,比如學(xué)生和課程的關(guān)系。一個學(xué)生可以選修多門課程,一個課程可以被多名學(xué)生選修。在關(guān)系型數(shù)據(jù)庫中對于多對多關(guān)聯(lián)關(guān)系的處理一般采用中間表的形式,將多對多的關(guān)系轉(zhuǎn)化成兩個一對多的關(guān)系。北京傳智播客教育映射多對多雙向關(guān)聯(lián)關(guān)系北京傳智播客教育映射多對多雙向關(guān)聯(lián)關(guān)系北京傳智播客教育映射組件關(guān)系北京傳智播客教育映射組件關(guān)系北京傳智播客教育映射組件關(guān)系這就是組件北京傳智播客教育映射組件關(guān)系Hibernate把持久化類的屬性分為兩種:值(value)類型:沒有OID,不能被單獨持久化,生命周期依賴于所屬的持久化類的對象的生命周期,組件類型就是一種值類型實體(entity)類型:有OID,可以被單獨持久化,有獨立的生命周期Hibernate使用<component>元素來映射組成關(guān)系,該元素表明homeAddress屬性是Customer類一個組成部分,在Hibernate中稱之為組件北京傳智播客教育映射組件關(guān)系的映射文件北京傳智播客教育深入Session北京傳智播客教育操縱持久化對象知識點1:圖解Java對象在JVM中的生命周期北京傳智播客教育操縱持久化對象概述

Session接口是

Hibernate向應(yīng)用程序提供的操縱對數(shù)據(jù)庫的最主要的接口,

它提供了基本的保存(save),更新(update),刪除(delete)和加載(get/load)Java對象的方法.知識點2:session概述北京傳智播客教育操縱持久化對象在Session接口的實現(xiàn)中包含一系列的Java集合,這些Java集合構(gòu)成了Session緩存.只要Session實例沒有結(jié)束生命周期,存放在它緩存中的對象也不會結(jié)束生命周期

當(dāng)session的save()方法持久化一個對象時,該對象被載入緩存,以后即使程序中不再引用該對象,只要緩存不清空,該對象仍然處于生命周期中。知識點3:圖解session的緩存北京傳智播客教育操縱持久化對象Session具有一個緩存,位于緩存中的對象稱為持久化對象,它和數(shù)據(jù)庫中的相關(guān)記錄對應(yīng).Session能夠在某些時間點,按照緩存中對象的變化來執(zhí)行相關(guān)的SQL語句,來同步更新數(shù)據(jù)庫,這一過程被稱為清理緩存(flush)默認(rèn)情況下Session在以下時間點清理緩存:當(dāng)應(yīng)用程序調(diào)用Transaction的commit()方法的時,該方法先清理緩存,然后在向數(shù)據(jù)庫提交事務(wù)。顯式調(diào)用Session的flush()

方法.知識點4_1:清理session的緩存北京傳智播客教育操縱持久化對象區(qū)別:

flush:

進(jìn)行清理緩存(此時緩存中的數(shù)據(jù)并不丟失)的操作,讓緩存和數(shù)據(jù)庫同步執(zhí)行一些列sql語句,但不提交事務(wù);

commit:先調(diào)用flush()方法,然后提交事務(wù).則意味著提交事務(wù)意味著對數(shù)據(jù)庫操作永久保存下來; clear:清空緩存,等價于list.removeAll();知識點4_2:區(qū)分mit/clear三個方法北京傳智播客教育操縱持久化對象知識點4_3:設(shè)置緩存的清理模式

session.setFlushMode(FlushMode.AUTO);清理緩存的模式Session的查詢方法tx的commit()Session的flush()FlushMode.AUTO(默認(rèn))清理清理清理MIT不清理清理清理FlushMode.NEVER(演示)不清理不清理清理北京傳智播客教育

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論