版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Hibernate配置、目錄、1 Hibernate概述2第一個(gè)Hibernate程序3 Hibernate配置文件4永久化對象5 Hibernate映射文件6 JPA注釋介紹7個(gè)概述、2、 Hibernate體系結(jié)構(gòu)簡單Hibernate體系結(jié)構(gòu),Hibernate全面的解決方案體系結(jié)構(gòu),3,Hibernate全面的解決方案體系結(jié)構(gòu)說明,SessionFactory單個(gè)數(shù)據(jù)庫映射Session是應(yīng)用程序和永久存儲(chǔ)層之間交互的單線程對象瞬態(tài)對象系統(tǒng)創(chuàng)建new關(guān)鍵字的Java實(shí)例,不與Session關(guān)聯(lián),而是位于瞬態(tài)永久對象中,并且與該實(shí)例數(shù)據(jù)庫關(guān)聯(lián)的記錄關(guān)閉對象,雖然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)程序管理器。以及此對象僅在需要擴(kuò)展應(yīng)用程序時(shí)使用。 從流程圖中可以看到,“事務(wù)工廠”(TransactionFactory )生成事務(wù)對象實(shí)例的工廠、5、Hibernate機(jī)制、6、以及Hibernate執(zhí)行進(jìn)程通過實(shí)例化Configeration對象,可以讀取cfg.xml文件的放置內(nèi)容,并根據(jù)相關(guān)需要?jiǎng)?chuàng)建表或與表建立映射關(guān)系。 (3)從實(shí)例化的Configera
3、tion對象制作sessionFactory實(shí)例。 (可以從sessionFactory實(shí)例創(chuàng)建session對象。 (5)一旦得到了session,就可以開始事務(wù),以session接口提供的各種方式操作對數(shù)據(jù)庫的訪問。 除了相對復(fù)雜的全文搜索外,簡單的操作還可以通過hibernate封裝的session內(nèi)置方法來實(shí)現(xiàn)。 (6)操作完成后,提交數(shù)據(jù)庫操作結(jié)果,關(guān)閉Session連接。7,Hibernate配置、Configuration對象org.cfg.Configuration實(shí)例表示應(yīng)用到SQL數(shù)據(jù)庫的映射配置,而Configuration表示buildsession 使用cfg.xml
4、文件作為配置文件。 在不使用配置文件的情況下編碼和創(chuàng)建配置對象。8、Hibernate部署、JDBC連接屬性部署數(shù)據(jù)庫直接部署JNDI數(shù)據(jù)源的連接屬性部署Hibernate事務(wù)屬性部署二次緩存關(guān)聯(lián)屬性部署外部連接獲得屬性部署其他一般部署、9、JDBC連接部署中最重要的設(shè)置、connecttion connection.username :連接到數(shù)據(jù)庫的用戶名。 connection.password :用于連接到數(shù)據(jù)庫的密碼。 connection.pool _ size設(shè)置hibernate數(shù)據(jù)庫連接池的最大并發(fā)連接數(shù)。 dialect :設(shè)定用于數(shù)據(jù)庫連接的方言。10、和其他常見配置屬性,
5、show _ SQL :是否在控制臺(tái)上輸出由hibernate生成的SQL語句,或僅true或false兩個(gè)值format_SQL :是否將SQL語句轉(zhuǎn)換為適當(dāng)格式的SQL語句。 use _ sql _ comments :是否在hibernate生成的SQL語句中添加有助于調(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永久化對象5 Hibernate映射文件6 JPA Annotation介紹7個(gè)總結(jié)12、深入理解永久化類的要求, 使用非final類來重寫equal ()和hashCode ()方法、13、和永久對象的狀態(tài),以確保用于標(biāo)識提供沒有殘奧儀表的構(gòu)造函數(shù)的屬性的類型基本類型不會(huì)將set和get方法添加到永久
7、類的每個(gè)屬性中。 永久對象PO=POJO映射文件PO如下:非穩(wěn)態(tài):如果PO實(shí)例沒有與Session實(shí)例相關(guān)聯(lián),則該實(shí)例處于非穩(wěn)態(tài)狀態(tài)。 永久化:如果PO實(shí)例與Session實(shí)例相關(guān)聯(lián),并且該實(shí)例與數(shù)據(jù)庫中的記錄相關(guān)聯(lián)。 脫管:以前PO實(shí)例與Session實(shí)例相關(guān)聯(lián),但由于Session的關(guān)閉等原因,PO實(shí)例脫離Session的管理時(shí),將此狀態(tài)稱為脫管狀態(tài)。 對PO的操作必須在Session的管理下才能與數(shù)據(jù)庫同步。 Session由SessionFactory工廠生成,SessionFactory是數(shù)據(jù)庫編譯的內(nèi)存鏡像,通常與SessionFactory對象相對應(yīng)。 SessionFactor
8、y對象由配置對象生成,配置負(fù)責(zé)加載Hibernate配置文件。14、永久性對象的狀態(tài)、非穩(wěn)態(tài):對象由new操作符創(chuàng)建,與Hibernate Session不關(guān)聯(lián)的對象被視為非穩(wěn)態(tài)。 瞬態(tài)對象不會(huì)永久化到數(shù)據(jù)庫中,也不會(huì)給予永久化id。 如果程序丟失對瞬態(tài)對象的引用,則垃圾回收機(jī)制將丟棄該瞬態(tài)對象。 使用Hibernate Session進(jìn)入持久狀態(tài)。15、永久化對象的狀態(tài)、永久化:永久化實(shí)例具有與數(shù)據(jù)庫對應(yīng)的記錄,并且具有永久化id。 永久化的實(shí)例可以是剛保存的,也可以是剛加載的。 在任何情況下,永久化對象都必須與指定的hibernate會(huì)話相關(guān)聯(lián)。 hibernate檢測持久對象的更改,并在
9、當(dāng)前操作完成時(shí)將對象數(shù)據(jù)寫入數(shù)據(jù)庫。 開發(fā)人員不需要手動(dòng)運(yùn)行更新。16、永久化對象的狀態(tài)、脫管:一個(gè)實(shí)例屬于永久化狀態(tài),但是關(guān)聯(lián)的Session關(guān)閉后,該對象變?yōu)槊摴軤顟B(tài)。 對脫機(jī)對象的引用仍然有效,您可以繼續(xù)修改對象。 將脫機(jī)對象與會(huì)話相關(guān)聯(lián)時(shí),脫機(jī)對象將重新轉(zhuǎn)換為持久狀態(tài),脫機(jī)更改不會(huì)丟失并寫入數(shù)據(jù)庫。 因此,邏輯上長的事務(wù)成為可能,被稱為應(yīng)用程序事務(wù)。 也就是說,事務(wù)可以跨越用戶的思維、17、永久化對象的狀態(tài)轉(zhuǎn)移、18、永久化實(shí)體: 1、將串行化保存(object obj )對象永久化的狀態(tài)2、void永久(object object PK )將obj對象永久化的狀態(tài)此對象存儲(chǔ)在數(shù)據(jù)庫中
10、,指定主鍵值4、void persist(object obj,object pk ),設(shè)置主鍵,并添加19、以創(chuàng)建過渡對象/消息標(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í)加載對象的屬性從即時(shí)數(shù)據(jù)庫中查找Load () :延遲加載對象的屬性僅在使用時(shí)從數(shù)據(jù)庫中查找,21、更新永久化實(shí)體: u.set set 基本上,在sess.flush ()之前生成的update語句包
11、含where=、22、以更新受管理實(shí)體:如果程序更改管理狀態(tài),則程序必須顯式使用新的Session保存更改。 hibernate提供了三種方法Update方法: 如果沒有永久化,則使用save方法。 如果沒有永久化,則使用。 updateOrSave ()方法:如果您不記得對象是否持久使用過期。23、merge方法與update方法的功能相同,不同之處在于執(zhí)行sess.merge(a )方法后,a對象不是永久化對象的狀態(tài)。 Update將a轉(zhuǎn)換為永久化對象、24、永久化實(shí)體delete() Session的delete ()方法,將永久化對象或臨時(shí)脫管對象轉(zhuǎn)換為臨時(shí)對象。 對于非管對象,del
12、ete ()方法從數(shù)據(jù)庫中刪除相應(yīng)的記錄;對于永久對象,delete ()從數(shù)據(jù)庫中刪除相應(yīng)的記錄,并從Session緩存中刪除。 例如: sess2.delete(u ); 調(diào)用、25、和close()Session的close ()時(shí),session的高速緩存為空,高速緩存中的所有永久化對象為脫管對象。 如果應(yīng)用程序未引用這些脫機(jī)對象,則生命周期將終止。 evict() Session中的evict ()可以通過從緩存中刪除永久對象使其脫機(jī)。 如果在Session的高速緩存中保存了大量的持久化對象,則會(huì)占用大量的內(nèi)存空間。 為了提高性能,請考慮調(diào)用evict ()從緩存中刪除某些永久化對象
13、。 但是,不建議使用evict ()。26,1.save,persist保存數(shù)據(jù),persist不在事務(wù)外生成insert語句。 2 .刪除2.delete、對象3.update,更新對象,如果數(shù)據(jù)庫中沒有記錄,則會(huì)引發(fā)異常。 4 .根據(jù)get、ID檢查,立即訪問數(shù)據(jù)庫。 5 .根據(jù)5.Load、ID檢查(返回代理,不立即訪問數(shù)據(jù)庫)。 6.saveOrUpdate,merge (根據(jù)id和版本的值決定save或update ),調(diào)用merge來托管你的對象嗎? 7.lock (使對象成為永久對象,但對象的狀態(tài)不同步)。 在、27、Session中完成基本操作,在Session中完成Hiber
14、nate對數(shù)存儲(chǔ)庫的基本操作。 Session提供了基本的保存、更新、刪除和查詢方法。 保存,28,1數(shù)據(jù),session.save ()方法用于永久保存實(shí)體對象。 例如,執(zhí)行session.save ()方法不會(huì)立即更新數(shù)據(jù)庫,而是僅在session清理高速緩存時(shí)執(zhí)行insert語句。 人員用戶=新人員(); 用戶名稱(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 (對象標(biāo)識符、對象id )從數(shù)據(jù)庫中加載永久性對象。差異:如果數(shù)據(jù)庫中沒有與OID對應(yīng)的記錄,則load ()方法引發(fā)net.sf.ObjectNotfoundException異常,get ()方法返回null。 兩種方法都將對象設(shè)置為持久狀態(tài),并且當(dāng)前Session的、30,Session session1=sf.openSession (); transaction tx1=session.begin transaction (); 自定義會(huì)話1.load (自定義類,新長(1) ); 自定義會(huì)話1.load (自定義類,新長(2) ); mit (); Session1.close (); 更新數(shù)據(jù)、31、c、3,并且session.update ()方法可以將臨時(shí)脫離管理或狀態(tài)的對象重新并入Hibernate的內(nèi)部緩存中,以便成為永久化對象。 調(diào)用session.upda
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44889-2024機(jī)關(guān)運(yùn)行成本統(tǒng)計(jì)指南
- 工作總結(jié)之房地產(chǎn)頂崗實(shí)習(xí)總結(jié)
- 工作總結(jié)之城市認(rèn)知實(shí)習(xí)總結(jié)
- 銀行內(nèi)部審計(jì)結(jié)果運(yùn)用制度
- 幼兒園元宵節(jié)做元宵活動(dòng)總結(jié)(32篇)
- 《讓測試敏捷起來》課件
- 內(nèi)衣銷售渠道研究報(bào)告(摘要fuheng)
- 黑龍江省虎林市2025屆高三六校第一次聯(lián)考數(shù)學(xué)試卷含解析
- 福建省廈門湖濱中學(xué)2025屆高三3月份第一次模擬考試數(shù)學(xué)試卷含解析
- 浙江省慈溪市2025屆高三第五次模擬考試英語試卷含解析
- 分子生物學(xué)與醫(yī)藥智慧樹知到期末考試答案2024年
- 《大慶精神-鐵人精神》課件wanzheng
- 危險(xiǎn)廢物管理臺(tái)賬(空白表4張)
- 飼養(yǎng)寵物兔子知識培訓(xùn)課件
- 道路鏟雪除冰合同
- 慢性胰腺炎診治指南
- 機(jī)械設(shè)備租賃報(bào)價(jià)單
- 自動(dòng)化生產(chǎn)線安裝與調(diào)試實(shí)訓(xùn)報(bào)告
- 科研誠信教育專項(xiàng)培訓(xùn)
- “雙減”背景下如何優(yōu)化農(nóng)村小學(xué)數(shù)學(xué)作業(yè)設(shè)計(jì)
- 中國移動(dòng)網(wǎng)絡(luò)長述職報(bào)告
評論
0/150
提交評論