經典heibernate教程,從進門到精通-cstp-hibernate02(第二篇,共四篇)_第1頁
經典heibernate教程,從進門到精通-cstp-hibernate02(第二篇,共四篇)_第2頁
經典heibernate教程,從進門到精通-cstp-hibernate02(第二篇,共四篇)_第3頁
經典heibernate教程,從進門到精通-cstp-hibernate02(第二篇,共四篇)_第4頁
經典heibernate教程,從進門到精通-cstp-hibernate02(第二篇,共四篇)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論