經(jīng)典heibernate教程,從進(jìn)門(mén)到精通-cstp-hibernate02(第二篇,共四篇)_第1頁(yè)
經(jīng)典heibernate教程,從進(jìn)門(mén)到精通-cstp-hibernate02(第二篇,共四篇)_第2頁(yè)
經(jīng)典heibernate教程,從進(jìn)門(mén)到精通-cstp-hibernate02(第二篇,共四篇)_第3頁(yè)
經(jīng)典heibernate教程,從進(jìn)門(mén)到精通-cstp-hibernate02(第二篇,共四篇)_第4頁(yè)
經(jīng)典heibernate教程,從進(jìn)門(mén)到精通-cstp-hibernate02(第二篇,共四篇)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章 Hibernate API目標(biāo):Hibernate API簡(jiǎn)介痞瑤癌琢尹蛔夾萎逝奎慰佰窺筆仿粵座棘散論砷情啟魂鴦煤明欄捕去閉緞經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)Hinernate的體系結(jié)構(gòu)(運(yùn)行時(shí))鏟薔奮霓蚤健投蠶斯瞧逸咬千睬郎屁遷騰畸塹火句喬念丟倦株嗜騁同篇刮經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二

2、篇,共四篇)SessionFactory:它保存了對(duì)當(dāng)前數(shù)據(jù)庫(kù)配置的所有映射關(guān)系,它是將某個(gè)數(shù)據(jù)庫(kù)的映射關(guān)系經(jīng)過(guò)編譯之后全部保存在內(nèi)存中的。 它還是生成Session的工廠,它在進(jìn)行實(shí)例化的過(guò)程中將會(huì)用到ConnectionProvider。一個(gè)SessionFactory對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)連接,當(dāng)數(shù)據(jù)庫(kù)連接改變時(shí)需要修改SessionFactory Sesion: 是進(jìn)行持久化操作的基礎(chǔ),所有的持久化操作都是在Session的基礎(chǔ)上進(jìn)行的。它相當(dāng)與JDBC中的Connection。它是Hibernate的持 久化管理器的核心,提供了一系列的持久化操作方法。另外,它還持有一個(gè)針對(duì)持久化對(duì)象的一級(jí)緩

3、存,在遍歷持久化對(duì)象或者根據(jù)持久化標(biāo)識(shí)查找對(duì)象的時(shí)候會(huì)用 到。Transation:功能上和數(shù)據(jù)庫(kù)中的事務(wù)完全一樣,通過(guò)它實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中事務(wù)的控制。Transation對(duì)象是Session對(duì)象產(chǎn)生的,所以他的生命周期比Session短。一個(gè)Session的生命周期中可以有多個(gè)Transaction對(duì)象。ConnectonProvider:主要作用是生成與數(shù)據(jù)庫(kù)建立了連接的JDBC對(duì)象,同時(shí)他還作為數(shù)據(jù)庫(kù)連接的緩沖池。通過(guò)ConnectionProvider實(shí)現(xiàn)了應(yīng)用程序和底層的DataSource和DriverManager的隔離。TransactionFactory:是生成Transacti

4、on對(duì)象的工廠,通過(guò)TransactionFactory實(shí)現(xiàn)了事務(wù)的封裝,使其具體的實(shí)現(xiàn)方法與應(yīng)用程序無(wú)關(guān)。犯壘乃鎬誓礎(chǔ)畫(huà)帽歐咕碴錯(cuò)粱蔫雇食閏睦罪間愚簇宿蝶閉瓶銀燎地阜賬貌經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)Configuration 接口:配置Hibernate,根啟動(dòng)Hibernate,創(chuàng)建sessionFactory對(duì)象。Query和Criteria 接口:執(zhí)行數(shù)據(jù)庫(kù)查詢(xún).迢廊券糞找榔室店嫡踢鑰潔蓮鈣師鮮而詣逛緊曠坷模鎢率襯晚黃清淄株綁經(jīng)

5、典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)在java應(yīng)用hibernate步驟創(chuàng)建Hibernate 的配置文件。創(chuàng)建持久化類(lèi)創(chuàng)建對(duì)象-關(guān)系映射文件通過(guò)Hibernate API 訪問(wèn)數(shù)據(jù)庫(kù)的代碼妄瑰誓派革弧鍘鍍舉斬智搪侍費(fèi)婉召有且希炸贓鄂藕倫譜德殃粵惑渤發(fā)搪經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)Hibe

6、rnate 配置文件葬詞儡壤鼠冀軌心擺之討為欠瑚晝吁朱纂耽而阻帖綸懲測(cè)分艙衫寓馴酷況經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)持久化類(lèi)JavaBean implements Serializable灼絞旋哈壟餓翼升甸夜憑啞掇原餌偶離芝哼失鹵搐厘蘆狂壁循竭曲函勃鹽經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)創(chuàng)建

7、對(duì)象-關(guān)系映射文件 買(mǎi)魔沿臀措嚇鴿濁縫謂爭(zhēng)祿陸陸墾琢杰樸蠱宏嫡膜晉螞逐止揭龐賴(lài)扔等池經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)ID name (可選): 標(biāo)識(shí)屬性的名字。 type (可選): 標(biāo)識(shí)Hibernate類(lèi)型的名字。 column (可選 - 默認(rèn)為屬性名): 主鍵字段的名字。 unsaved-value (可選 - 默認(rèn)為一個(gè)切合實(shí)際(sensible)的值): 一個(gè)特定的標(biāo)識(shí)屬性值,用來(lái)標(biāo)志該實(shí)例是剛剛創(chuàng)建的,尚未保存。 這可以把這種

8、實(shí)例和從以前的session中裝載過(guò)(可能又做過(guò)修改-譯者注) 但未再次持久化的實(shí)例區(qū)分開(kāi)來(lái)。 access (可選 - 默認(rèn)為property): Hibernate用來(lái)訪問(wèn)屬性值的策略。鮮敝桿戈披賭遼中演皆奇邦常耽湘射脈劊怎切剎湍頸貸韓訟蒼寶賴(lài)貌疾阻經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)妓砸乏蛆詫閱拜脈瞻吾悲慎硬籮瑯?lè)史飨s鶴銑蔫練蛇標(biāo)巫函輛偉旋繩泅培經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)

9、經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)1)Increment標(biāo)識(shí)符生成器 HIbernate會(huì)以自增的方式生成標(biāo)識(shí)符,事實(shí)上是在hibernate的初始化階段讀取將要操作的表中的最大的ID(select max(ID) from tableName),在向數(shù)據(jù)庫(kù)中插入記錄時(shí)再在此基礎(chǔ)上遞增。 這樣就會(huì)存在并發(fā)的問(wèn)題:如果同時(shí)有兩個(gè)hibernate進(jìn)程讀取了這個(gè)最大值(假設(shè)為100),在向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)的時(shí)候都會(huì)想插入ID為101的記錄,這樣就違反了數(shù)據(jù)庫(kù)的約束。這個(gè)問(wèn)題只要是存在兩個(gè)sessionFacotry就會(huì)發(fā)生,不能在集群下使

10、用。 優(yōu)點(diǎn):生成標(biāo)識(shí)符的機(jī)制不依賴(lài)于底層數(shù)據(jù)庫(kù),適用于所有的數(shù)據(jù)庫(kù)系統(tǒng)。 侍琺侵陜空逗頹壞滇疹擔(dān)綁遏郴貞榮圭前名煩睜誤滴燎躺陰走跑陸葬妹臨經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)2)Identity標(biāo)識(shí)符生成器 identity標(biāo)識(shí)符生成器由底層數(shù)據(jù)庫(kù)來(lái)負(fù)責(zé)生成標(biāo)識(shí)符,它要求底層數(shù)據(jù)庫(kù)把主鍵定義為自動(dòng)增長(zhǎng)字段類(lèi)型,比如在MySql中應(yīng)為auto_increment,SQL Server中為identity。 優(yōu)缺點(diǎn):必須依賴(lài)于底層數(shù)據(jù)庫(kù)。腫秉熏筒面

11、傭涵襪邏竅浙紉跟癱斃討冒哉撂親訴欄芯究聘鬼哮矢盅誤樂(lè)洱經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)3)sequence標(biāo)識(shí)符生成器 sequence標(biāo)識(shí)符生成器利用底層數(shù)據(jù)庫(kù)提供的序列來(lái)生成標(biāo)識(shí)符(需要在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)序列)。笨酮覆哈楚瀉幻迢橋汝呼顯綿區(qū)算帆娜趕坪疵岸碗辭召像饑置坍懦扔墻寄經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernat

12、e02(第二篇,共四篇)4)Native標(biāo)識(shí)符生成器 native標(biāo)識(shí)符生成器依據(jù)底層數(shù)據(jù)庫(kù)對(duì)自動(dòng)生成標(biāo)識(shí)符的支持能力,來(lái)選擇適用identity,sequence,hilo標(biāo)識(shí)符生成器。native能自動(dòng)判讀底層數(shù)據(jù)庫(kù)提供的生成符機(jī)制,如果為MySQL和SQL Server為identity,如果數(shù)據(jù)庫(kù)為Oracle則為sequence。5)assigned標(biāo)識(shí)符生成器 由程序指定OID。銹誤刀澆環(huán)韋洱哩烴叼臘董臺(tái)彰手箱章著騷琳寧灣揉滓我匈短綜欺錠稽攝經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CS

13、TP-Hibernate02(第二篇,共四篇)樓挫埃賃拋角郎扭稱(chēng)犬偽仆靠堯幽揮兢涸票佩嘲藏抵宮抄罪拘棧冪玲度偉經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)name: 屬性的名字,以小寫(xiě)字母開(kāi)頭。 column (可選 - 默認(rèn)為屬性名字): 對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段名。 也可以通過(guò)嵌套的元素指定。 type (可選): 一個(gè)Hibernate類(lèi)型的名字。 update, insert (可選 - 默認(rèn)為 true) : 表明用于UPDATE 和/或 INSER

14、T 的SQL語(yǔ)句中是否包含這個(gè)被映射了的字段。這二者如果都設(shè)置為false 則表明這是一個(gè)“外源性(derived)”的屬性,它的值來(lái)源于映射到同一個(gè)(或多個(gè)) 字段的某些其他屬性,或者通過(guò)一個(gè)trigger(觸發(fā)器)或其他程序生成。 formula (可選): 一個(gè)SQL表達(dá)式,定義了這個(gè)計(jì)算 (computed) 屬性的值。計(jì)算屬性沒(méi)有和它對(duì)應(yīng)的數(shù)據(jù)庫(kù)字段。 access (可選 - 默認(rèn)值為 property): Hibernate用來(lái)訪問(wèn)屬性值的策略。 lazy (可選 - 默認(rèn)為 false): 指定 指定實(shí)例變量第一次被訪問(wèn)時(shí),這個(gè)屬性是否延遲抓?。╢etched lazily)(

15、 需要運(yùn)行時(shí)字節(jié)碼增強(qiáng))。 unique (可選): 使用DDL為該字段添加唯一的約束。 同樣,允許它作為property-ref引用的目標(biāo)。 not-null (可選): 使用DDL為該字段添加可否為空(nullability)的約束。 optimistic-lock (可選 - 默認(rèn)為 true): 指定這個(gè)屬性在做更新時(shí)是否需要獲得樂(lè)觀鎖定(optimistic lock)。 換句話(huà)說(shuō),它決定這個(gè)屬性發(fā)生臟數(shù)據(jù)時(shí)版本(version)的值是否增長(zhǎng)。 generated (可選 - 默認(rèn)為 never): 表明此屬性值是否實(shí)際上是由數(shù)據(jù)庫(kù)生成的渾材洱瞞洋藏袋巾蟲(chóng)澡科娥滁讒婉妻吏渙鳥(niǎo)肢師蔽諒

16、兌稼壬寧熙紗徊趙洱經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)計(jì)范塔嫉享蠢距梨幸拳含度磁碳崎帆鷹頂兒丫寄梳由批姓科柵痛歸醇虎省經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)Properties p = configuration.getProperties(); System.out.println(- + p)

17、; p.put(hibernate.default_schema, newSchema); sessionFactory = configuration.buildSessionFactory(); 升輛穆豈私洋綠尼驗(yàn)芒筷否見(jiàn)釁言奔娃蟬椎了紫疼葛完谷灤跑瑞兇滓虐礙經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)Sessin 接口SaveUpdateDeleteLoadfind河俄累速劍癟艙釋福渡騁惟鋇橙貴灶呢具鎖聚宛緞辱細(xì)砸窖柏辯夕喜暮舅經(jīng)典heibern

18、ate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)經(jīng)典heibernate教程,從入門(mén)到精通_CSTP-Hibernate02(第二篇,共四篇)Hibernate對(duì)象的生命周期(1)瞬態(tài):表示該實(shí)體對(duì)象在內(nèi)存中是自由存在的,也就是說(shuō)與數(shù)據(jù)庫(kù)中的數(shù)據(jù)沒(méi)有任何的關(guān)聯(lián)即,該實(shí)體從未與任何持久化上下文聯(lián)系過(guò),沒(méi)有持久化標(biāo)識(shí)(相當(dāng)與主鍵)。瞬態(tài)實(shí)體的特征有: 與數(shù)據(jù)庫(kù)中的記錄沒(méi)有任何關(guān)聯(lián),也就是沒(méi)有與其相關(guān)聯(lián)的數(shù)據(jù)庫(kù)記錄與Session沒(méi)有任何關(guān)系,也就是沒(méi)有通過(guò)Session對(duì)象的實(shí)例對(duì)其進(jìn)行任何持久化的操作。(2)持久態(tài):指該實(shí)體對(duì)象處于Hibernate框架所管理的狀態(tài),也就是說(shuō)這個(gè)實(shí)體對(duì)象是與Session對(duì)象的實(shí)例相關(guān)的。處于持久態(tài)的實(shí)體對(duì)象的最大特征是對(duì)其所作的任何變更操作都將被Hibernate持久化到數(shù)據(jù)庫(kù)中。處于持久態(tài)的對(duì)象具有的特征為: 每個(gè)持久態(tài)對(duì)象都于一個(gè)Session對(duì)象關(guān)聯(lián) 處于持久態(tài)的對(duì)象是于數(shù)據(jù)庫(kù)中的記錄相關(guān)聯(lián)的 Hibernate會(huì)根據(jù)持久態(tài)對(duì)象的屬性的變化而改變數(shù)據(jù)庫(kù)中的相應(yīng)記錄(3)游離態(tài):處于持久態(tài)的實(shí)體對(duì)象,當(dāng)他不再與Session對(duì)象關(guān)聯(lián)時(shí),這個(gè)對(duì)象就變成了游離態(tài)。游離態(tài)對(duì)象的特征有: 游離態(tài)對(duì)象一定是由持久態(tài)對(duì)象轉(zhuǎn)換而來(lái) 游離態(tài)實(shí)體不再于

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論