版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Hibernate配置、目錄、1 Hibernate概述2第一個(gè)Hibernate程序3 Hibernate配置文件4永久化對(duì)象5 Hibernate映射文件6 JPA注釋介紹7個(gè)概述、2、 Hibernate體系結(jié)構(gòu)簡(jiǎn)單Hibernate體系結(jié)構(gòu),Hibernate全面的解決方案體系結(jié)構(gòu),3,Hibernate全面的解決方案體系結(jié)構(gòu)說(shuō)明,SessionFactory單個(gè)數(shù)據(jù)庫(kù)映射Session是應(yīng)用程序和永久存儲(chǔ)層之間交互的單線程對(duì)象瞬態(tài)對(duì)象系統(tǒng)創(chuàng)建new關(guān)鍵字的Java實(shí)例,不與Session關(guān)聯(lián),而是位于瞬態(tài)永久對(duì)象中,并且與該實(shí)例數(shù)據(jù)庫(kù)關(guān)聯(lián)的記錄關(guān)閉對(duì)象,雖然PO實(shí)例曾經(jīng)與Sessio
2、n實(shí)例相關(guān)聯(lián),但是由于Session的關(guān)閉等原因,PO實(shí)例從Session的管理中脫離所有永久化操作都必須在事務(wù)管理下進(jìn)行,即使是只讀操作也是如此。 連接提供器是用于生成JDBC連接的工廠,它充當(dāng)連接池,抽象地隔離底層的數(shù)據(jù)源和驅(qū)動(dòng)程序管理器。以及此對(duì)象僅在需要擴(kuò)展應(yīng)用程序時(shí)使用。 從流程圖中可以看到,“事務(wù)工廠”(TransactionFactory )生成事務(wù)對(duì)象實(shí)例的工廠、5、Hibernate機(jī)制、6、以及Hibernate執(zhí)行進(jìn)程通過(guò)實(shí)例化Configeration對(duì)象,可以讀取cfg.xml文件的放置內(nèi)容,并根據(jù)相關(guān)需要?jiǎng)?chuàng)建表或與表建立映射關(guān)系。 (3)從實(shí)例化的Configera
3、tion對(duì)象制作sessionFactory實(shí)例。 (可以從sessionFactory實(shí)例創(chuàng)建session對(duì)象。 (5)一旦得到了session,就可以開(kāi)始事務(wù),以session接口提供的各種方式操作對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。 除了相對(duì)復(fù)雜的全文搜索外,簡(jiǎn)單的操作還可以通過(guò)hibernate封裝的session內(nèi)置方法來(lái)實(shí)現(xiàn)。 (6)操作完成后,提交數(shù)據(jù)庫(kù)操作結(jié)果,關(guān)閉Session連接。7,Hibernate配置、Configuration對(duì)象org.cfg.Configuration實(shí)例表示應(yīng)用到SQL數(shù)據(jù)庫(kù)的映射配置,而Configuration表示buildsession 使用cfg.xml
4、文件作為配置文件。 在不使用配置文件的情況下編碼和創(chuàng)建配置對(duì)象。8、Hibernate部署、JDBC連接屬性部署數(shù)據(jù)庫(kù)直接部署JNDI數(shù)據(jù)源的連接屬性部署Hibernate事務(wù)屬性部署二次緩存關(guān)聯(lián)屬性部署外部連接獲得屬性部署其他一般部署、9、JDBC連接部署中最重要的設(shè)置、connecttion connection.username :連接到數(shù)據(jù)庫(kù)的用戶名。 connection.password :用于連接到數(shù)據(jù)庫(kù)的密碼。 connection.pool _ size設(shè)置hibernate數(shù)據(jù)庫(kù)連接池的最大并發(fā)連接數(shù)。 dialect :設(shè)定用于數(shù)據(jù)庫(kù)連接的方言。10、和其他常見(jiàn)配置屬性,
5、show _ SQL :是否在控制臺(tái)上輸出由hibernate生成的SQL語(yǔ)句,或僅true或false兩個(gè)值format_SQL :是否將SQL語(yǔ)句轉(zhuǎn)換為適當(dāng)格式的SQL語(yǔ)句。 use _ sql _ comments :是否在hibernate生成的SQL語(yǔ)句中添加有助于調(diào)試的關(guān)注點(diǎn),只接受true和false兩個(gè)值。 jdbc.fetch_size:指定JDBC捕獲數(shù)的大小。 它可以接受調(diào)用Statement.setFetchSize ()方法的整數(shù)值。 JDBC.batch _ size -指定hibernate使用批量JDBC2更新的大小。 可以接受整數(shù)值。 推薦530的范圍。con
6、nection.autocommit :設(shè)定是否自動(dòng)發(fā)送。 通常不推薦自動(dòng)提交。 hbm2DDL.auto :設(shè)置在創(chuàng)建會(huì)話工廠時(shí)創(chuàng)建Drop的數(shù)據(jù)表。 此屬性可以有三個(gè)值:更新、創(chuàng)建和刪除創(chuàng)建。11、目錄、1 Hibernate概述2第一個(gè)Hibernate程序3 Hibernate配置文件4永久化對(duì)象5 Hibernate映射文件6 JPA Annotation介紹7個(gè)總結(jié)12、深入理解永久化類的要求, 使用非final類來(lái)重寫(xiě)equal ()和hashCode ()方法、13、和永久對(duì)象的狀態(tài),以確保用于標(biāo)識(shí)提供沒(méi)有殘奧儀表的構(gòu)造函數(shù)的屬性的類型基本類型不會(huì)將set和get方法添加到永久
7、類的每個(gè)屬性中。 永久對(duì)象PO=POJO映射文件PO如下:非穩(wěn)態(tài):如果PO實(shí)例沒(méi)有與Session實(shí)例相關(guān)聯(lián),則該實(shí)例處于非穩(wěn)態(tài)狀態(tài)。 永久化:如果PO實(shí)例與Session實(shí)例相關(guān)聯(lián),并且該實(shí)例與數(shù)據(jù)庫(kù)中的記錄相關(guān)聯(lián)。 脫管:以前PO實(shí)例與Session實(shí)例相關(guān)聯(lián),但由于Session的關(guān)閉等原因,PO實(shí)例脫離Session的管理時(shí),將此狀態(tài)稱為脫管狀態(tài)。 對(duì)PO的操作必須在Session的管理下才能與數(shù)據(jù)庫(kù)同步。 Session由SessionFactory工廠生成,SessionFactory是數(shù)據(jù)庫(kù)編譯的內(nèi)存鏡像,通常與SessionFactory對(duì)象相對(duì)應(yīng)。 SessionFactor
8、y對(duì)象由配置對(duì)象生成,配置負(fù)責(zé)加載Hibernate配置文件。14、永久性對(duì)象的狀態(tài)、非穩(wěn)態(tài):對(duì)象由new操作符創(chuàng)建,與Hibernate Session不關(guān)聯(lián)的對(duì)象被視為非穩(wěn)態(tài)。 瞬態(tài)對(duì)象不會(huì)永久化到數(shù)據(jù)庫(kù)中,也不會(huì)給予永久化id。 如果程序丟失對(duì)瞬態(tài)對(duì)象的引用,則垃圾回收機(jī)制將丟棄該瞬態(tài)對(duì)象。 使用Hibernate Session進(jìn)入持久狀態(tài)。15、永久化對(duì)象的狀態(tài)、永久化:永久化實(shí)例具有與數(shù)據(jù)庫(kù)對(duì)應(yīng)的記錄,并且具有永久化id。 永久化的實(shí)例可以是剛保存的,也可以是剛加載的。 在任何情況下,永久化對(duì)象都必須與指定的hibernate會(huì)話相關(guān)聯(lián)。 hibernate檢測(cè)持久對(duì)象的更改,并在
9、當(dāng)前操作完成時(shí)將對(duì)象數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)。 開(kāi)發(fā)人員不需要手動(dòng)運(yùn)行更新。16、永久化對(duì)象的狀態(tài)、脫管:一個(gè)實(shí)例屬于永久化狀態(tài),但是關(guān)聯(lián)的Session關(guān)閉后,該對(duì)象變?yōu)槊摴軤顟B(tài)。 對(duì)脫機(jī)對(duì)象的引用仍然有效,您可以繼續(xù)修改對(duì)象。 將脫機(jī)對(duì)象與會(huì)話相關(guān)聯(lián)時(shí),脫機(jī)對(duì)象將重新轉(zhuǎn)換為持久狀態(tài),脫機(jī)更改不會(huì)丟失并寫(xiě)入數(shù)據(jù)庫(kù)。 因此,邏輯上長(zhǎng)的事務(wù)成為可能,被稱為應(yīng)用程序事務(wù)。 也就是說(shuō),事務(wù)可以跨越用戶的思維、17、永久化對(duì)象的狀態(tài)轉(zhuǎn)移、18、永久化實(shí)體: 1、將串行化保存(object obj )對(duì)象永久化的狀態(tài)2、void永久(object object PK )將obj對(duì)象永久化的狀態(tài)此對(duì)象存儲(chǔ)在數(shù)據(jù)庫(kù)中
10、,指定主鍵值4、void persist(object obj,object pk ),設(shè)置主鍵,并添加19、以創(chuàng)建過(guò)渡對(duì)象/消息標(biāo)題和消息內(nèi)容設(shè)置n.setTitle (創(chuàng)建瘋狂的Java聯(lián)盟) n.setContent (創(chuàng)建瘋狂的Java聯(lián)盟,站點(diǎn)地址 ); /保存消息sess.save(n );20、Get和Load方法的差異Get () :即時(shí)加載對(duì)象的屬性從即時(shí)數(shù)據(jù)庫(kù)中查找Load () :延遲加載對(duì)象的屬性僅在使用時(shí)從數(shù)據(jù)庫(kù)中查找,21、更新永久化實(shí)體: u.set set 基本上,在sess.flush ()之前生成的update語(yǔ)句包
11、含where=、22、以更新受管理實(shí)體:如果程序更改管理狀態(tài),則程序必須顯式使用新的Session保存更改。 hibernate提供了三種方法Update方法: 如果沒(méi)有永久化,則使用save方法。 如果沒(méi)有永久化,則使用。 updateOrSave ()方法:如果您不記得對(duì)象是否持久使用過(guò)期。23、merge方法與update方法的功能相同,不同之處在于執(zhí)行sess.merge(a )方法后,a對(duì)象不是永久化對(duì)象的狀態(tài)。 Update將a轉(zhuǎn)換為永久化對(duì)象、24、永久化實(shí)體delete() Session的delete ()方法,將永久化對(duì)象或臨時(shí)脫管對(duì)象轉(zhuǎn)換為臨時(shí)對(duì)象。 對(duì)于非管對(duì)象,del
12、ete ()方法從數(shù)據(jù)庫(kù)中刪除相應(yīng)的記錄;對(duì)于永久對(duì)象,delete ()從數(shù)據(jù)庫(kù)中刪除相應(yīng)的記錄,并從Session緩存中刪除。 例如: sess2.delete(u ); 調(diào)用、25、和close()Session的close ()時(shí),session的高速緩存為空,高速緩存中的所有永久化對(duì)象為脫管對(duì)象。 如果應(yīng)用程序未引用這些脫機(jī)對(duì)象,則生命周期將終止。 evict() Session中的evict ()可以通過(guò)從緩存中刪除永久對(duì)象使其脫機(jī)。 如果在Session的高速緩存中保存了大量的持久化對(duì)象,則會(huì)占用大量的內(nèi)存空間。 為了提高性能,請(qǐng)考慮調(diào)用evict ()從緩存中刪除某些永久化對(duì)象
13、。 但是,不建議使用evict ()。26,1.save,persist保存數(shù)據(jù),persist不在事務(wù)外生成insert語(yǔ)句。 2 .刪除2.delete、對(duì)象3.update,更新對(duì)象,如果數(shù)據(jù)庫(kù)中沒(méi)有記錄,則會(huì)引發(fā)異常。 4 .根據(jù)get、ID檢查,立即訪問(wèn)數(shù)據(jù)庫(kù)。 5 .根據(jù)5.Load、ID檢查(返回代理,不立即訪問(wèn)數(shù)據(jù)庫(kù))。 6.saveOrUpdate,merge (根據(jù)id和版本的值決定save或update ),調(diào)用merge來(lái)托管你的對(duì)象嗎? 7.lock (使對(duì)象成為永久對(duì)象,但對(duì)象的狀態(tài)不同步)。 在、27、Session中完成基本操作,在Session中完成Hiber
14、nate對(duì)數(shù)存儲(chǔ)庫(kù)的基本操作。 Session提供了基本的保存、更新、刪除和查詢方法。 保存,28,1數(shù)據(jù),session.save ()方法用于永久保存實(shí)體對(duì)象。 例如,執(zhí)行session.save ()方法不會(huì)立即更新數(shù)據(jù)庫(kù),而是僅在session清理高速緩存時(shí)執(zhí)行insert語(yǔ)句。 人員用戶=新人員(); 用戶名稱(zx ); transaction tx=session.begin transaction (); session.save (用戶); session.flush (); mit (); session. close (); tx.close ();29、2加載數(shù)據(jù)、se
15、ssion的load ()和get ()方法可以基于指定的oid (對(duì)象標(biāo)識(shí)符、對(duì)象id )從數(shù)據(jù)庫(kù)中加載永久性對(duì)象。差異:如果數(shù)據(jù)庫(kù)中沒(méi)有與OID對(duì)應(yīng)的記錄,則load ()方法引發(fā)net.sf.ObjectNotfoundException異常,get ()方法返回null。 兩種方法都將對(duì)象設(shè)置為持久狀態(tài),并且當(dāng)前Session的、30,Session session1=sf.openSession (); transaction tx1=session.begin transaction (); 自定義會(huì)話1.load (自定義類,新長(zhǎng)(1) ); 自定義會(huì)話1.load (自定義類,新長(zhǎng)(2) ); mit (); Session1.close (); 更新數(shù)據(jù)、31、c、3,并且session.update ()方法可以將臨時(shí)脫離管理或狀態(tài)的對(duì)象重新并入Hibernate的內(nèi)部緩存中,以便成為永久化對(duì)象。 調(diào)用session.upda
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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īng)營(yíng)管理協(xié)議示范文本3篇
- 二零二五版新能源汽車電池回收利用服務(wù)協(xié)議4篇
- 二零二五年度打樁工程信息化管理合同規(guī)范范本3篇
- 2025年鮮蛋電商運(yùn)營(yíng)與數(shù)據(jù)分析合作協(xié)議3篇
- 二零二五年礦山承包經(jīng)營(yíng)資源節(jié)約利用協(xié)議3篇
- 2025年度煤礦企業(yè)員工勞動(dòng)合同范本(含加班補(bǔ)貼計(jì)算標(biāo)準(zhǔn))4篇
- 基于二零二五年度技術(shù)的香港電子合同制造成本降低協(xié)議3篇
- 個(gè)人電商運(yùn)營(yíng)服務(wù)合同2024年度3篇
- erp合同管理系統(tǒng)
- 2025年度無(wú)人機(jī)精準(zhǔn)定位服務(wù)采購(gòu)合同文本3篇
- 2025年上半年江蘇連云港灌云縣招聘“鄉(xiāng)村振興專干”16人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- DB3301T 0382-2022 公共資源交易開(kāi)評(píng)標(biāo)數(shù)字見(jiàn)證服務(wù)規(guī)范
- 人教版2024-2025學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末壓軸題練習(xí)
- 江蘇省無(wú)錫市2023-2024學(xué)年八年級(jí)上學(xué)期期末數(shù)學(xué)試題(原卷版)
- 俄語(yǔ)版:中國(guó)文化概論之中國(guó)的傳統(tǒng)節(jié)日
- 2022年湖南省公務(wù)員錄用考試《申論》真題(縣鄉(xiāng)卷)及答案解析
- 婦科一病一品護(hù)理匯報(bào)
- 2024年全國(guó)統(tǒng)一高考數(shù)學(xué)試卷(新高考Ⅱ)含答案
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)四 引起受眾傳播內(nèi)容要素的掌控
- 繪本《汪汪的生日派對(duì)》
- 助產(chǎn)護(hù)理畢業(yè)論文
評(píng)論
0/150
提交評(píng)論