精通Hibernate

出版時間:2005.5  出版社:電子工業(yè)出版社  作者:孫衛(wèi)琴  頁數(shù):598  
Tag標(biāo)簽:無  

前言

  在如今的企業(yè)級應(yīng)用開發(fā)環(huán)境中,面向?qū)ο蟮拈_發(fā)方法已成為主流。眾所周知,對象只能存在于內(nèi)存中,而內(nèi)存不能永久保存數(shù)據(jù)。如果要永久保存對象的狀態(tài),需要進行對象的持久化,即把對象存儲到專門的數(shù)據(jù)存儲庫中。目前,關(guān)系數(shù)據(jù)庫仍然是使用最廣泛的數(shù)據(jù)存儲庫。關(guān)系數(shù)據(jù)庫中存放的是關(guān)系數(shù)據(jù),它是非面向?qū)ο蟮摹! ο蠛完P(guān)系數(shù)據(jù)其實是業(yè)務(wù)實體的兩種表現(xiàn)形式。業(yè)務(wù)實體在內(nèi)存中表現(xiàn)為對象,在數(shù)據(jù)庫中表現(xiàn)為關(guān)系數(shù)據(jù)。內(nèi)存中的對象之間存在關(guān)聯(lián)和繼承關(guān)系,而在數(shù)據(jù)庫中,關(guān)系數(shù)據(jù)無法直接表達多對多關(guān)聯(lián)和繼承關(guān)系。因此,把對象持久化到關(guān)系數(shù)據(jù)庫中,需要進行對象-關(guān)系的映射(Object/Relation Mapping,簡稱ORM),這是一項繁瑣耗時的工作?! ≡趯嶋H應(yīng)用中,除了需要把內(nèi)存中的對象持久化到數(shù)據(jù)庫外,還需要把數(shù)據(jù)庫中的關(guān)系數(shù)據(jù)再重新加載到內(nèi)存中,以滿足用戶查詢業(yè)務(wù)數(shù)據(jù)的需求。頻繁地訪問數(shù)據(jù)庫,會對應(yīng)用的性能造成很大影響。為了降低訪問數(shù)據(jù)庫的頻率,可以把需要經(jīng)常被訪問的業(yè)務(wù)數(shù)據(jù)存放在緩存中,并且通過特定的機制來保證緩存中的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)同步?! ≡贘ava領(lǐng)域,可以直接通過JDBC編程來訪問數(shù)據(jù)庫。JDBC可以說是訪問關(guān)系數(shù)據(jù)庫的最原始、最直接的方法。這種方式的優(yōu)點是運行效率高,缺點是在Java程序代碼中嵌入大量SQL語句,使得項目難以維護。在開發(fā)企業(yè)級應(yīng)用時,可以通過JDBC編程來開發(fā)單獨的持久化層,把數(shù)據(jù)庫訪問操作封裝起來,提供簡潔的API,供業(yè)務(wù)層統(tǒng)一調(diào)用。但是,如果關(guān)系數(shù)據(jù)模型非常復(fù)雜,那么直接通過JDBC編程來實現(xiàn)持久化層需要有專業(yè)的知識。對于企業(yè)應(yīng)用的開發(fā)人員,花費大量時間從頭開發(fā)自己的持久化層不是很可行?! ⌒疫\的是,目前在持久化層已經(jīng)有好多種現(xiàn)成的持久化中間件可供選用,有些是商業(yè)性的,如TopLink;有些是非商業(yè)性的,如JDO和Hibernate。Hibernate是一個基于Java的開放源代碼的持久化中間件,它對JDBC做了輕量級封裝,不僅提供ORM映射服務(wù),還提供數(shù)據(jù)查詢和數(shù)據(jù)緩存功能,Java開發(fā)人員可以方便地通過Hibernate API來操縱數(shù)據(jù)庫?! ‖F(xiàn)在,越來越多的Java開發(fā)人員把Hibernate作為企業(yè)應(yīng)用和關(guān)系數(shù)據(jù)庫之間的中間件,以節(jié)省和對象持久化有關(guān)的30%的JDBC編程工作量。2005年,Hibernate作為優(yōu)秀的類庫和組件,榮獲了第15屆Jolt大獎。Hibernate之所以能夠流行,歸功于它的以下優(yōu)勢:  (1)它是開放源代碼的,允許開發(fā)人員在需要的時候研究源代碼,改寫源代碼,定制客戶化功能?! 。?)具有詳細(xì)的參考文檔。 ?。?)對JDBC僅做了輕量級封裝,必要的話,用戶還可以繞過Hibernate,直接訪問JDBC API?! 。?)具有可擴展性?! 。?)使用方便,容易上手?! 。?)Hibernate既適用于獨立的Java程序,也適用于Java Web應(yīng)用,而且還可以在J2EE架構(gòu)中取代CMP(Container-managered Persistence,由容器管理持久化),完成對象持久化的重任,Hibernate能集成到會話EJB和基于BMP的實體EJB中,BMP(Bean- managered Persistence)是指由實體EJB本身管理持久化。本書以netstore應(yīng)用為例,介紹了把Hibernate集成到會話EJB中的方法?! 。?)Hibernate可以和多種Web服務(wù)器、應(yīng)用服務(wù)器良好集成,并且支持幾乎所有流行的數(shù)據(jù)庫服務(wù)器?! ”緯Y(jié)合大量典性的實例,詳細(xì)介紹了運用目前最成熟的Hibernate 2.1版本進行Java對象持久化的技術(shù)。Hibernate是連接Java對象模型和關(guān)系數(shù)據(jù)模型的橋梁,通過本書,讀者不僅能掌握用Hibernate工具對這兩種模型進行映射的技術(shù),還能獲得設(shè)計與開發(fā)Java對象模型和關(guān)系數(shù)據(jù)模型的先進經(jīng)驗?! ”緯慕M織結(jié)構(gòu)和主要內(nèi)容  本書按照由淺入深、前后照應(yīng)的順序來安排內(nèi)容,主要包含以下內(nèi)容。  1.Hibernate入門  第1章和第2章為入門篇。第1章概要介紹了和Java對象持久化相關(guān)的各種技術(shù),詳細(xì)闡述了中間件、Java對象的持久化、持久化層、數(shù)據(jù)訪問細(xì)節(jié)、ORM、域模型和關(guān)系數(shù)據(jù)模型等概念?! 〉?章以一個Hibernate應(yīng)用實例—helloapp應(yīng)用為例,引導(dǎo)讀者把握設(shè)計、開發(fā)和部署Hibernate應(yīng)用的整體流程,理解Hibernate在分層的軟件結(jié)構(gòu)中所處的位置?! τ谝呀?jīng)在Java對象持久化領(lǐng)域有一定工作經(jīng)驗的開發(fā)人員,可以從第1章入手,高屋建瓴地把握持久化領(lǐng)域的各種理論,對于新手,不妨先閱讀第2章,以便快速獲得開發(fā)Hibernate應(yīng)用的實際經(jīng)驗。  2.Hibernate工具  第3章和附錄C介紹了Hibernate的一些代碼轉(zhuǎn)換工具的用法,例如,hbm2java工具能根據(jù)映射文件自動生成Java源文件,hbm2ddl功能能根據(jù)映射文件自動生成數(shù)據(jù)庫Schema?! ?.對象-關(guān)系映射技術(shù)  本書重點介紹的內(nèi)容就是如何運用Hibernate工具,把對象模型映射到關(guān)系數(shù)據(jù)模型,相關(guān)章節(jié)包括:  第4章:介紹對象-關(guān)系映射的基礎(chǔ)知識。  第5章:介紹對象標(biāo)識符的映射方法?! 〉?章:介紹一對多關(guān)聯(lián)關(guān)系的映射方法?! 〉?章:介紹組成關(guān)系的映射方法?! 〉?章:介紹Java類型、SQL類型和Hibernate映射類型之間的對應(yīng)關(guān)系。  第14章:介紹繼承關(guān)系的映射方法?! 〉?5章:介紹了Java集合類的用法,這一章主要是為第16章做鋪墊的?! 〉?6章:介紹Java集合的映射方法?! 〉?7章:介紹一對一和多對多關(guān)聯(lián)關(guān)系的映射方法?! ?.通過Hibernate API操縱數(shù)據(jù)庫  第7章介紹了運用Hibernate API來保存、更新、刪除、加載或查詢Java對象的方法,并介紹了Java對象在持久化層的三種狀態(tài):臨時狀態(tài)、持久化狀態(tài)和游離狀態(tài)。深入理解Java對象的三種狀態(tài)及狀態(tài)轉(zhuǎn)化機制,是編寫健壯的Hibernate應(yīng)用程序的必要條件?! ?.Hibernate的檢索策略和檢索方式  第10章介紹了Hibernate的各種檢索策略,對每一種檢索策略,都介紹了它的適用場合。第11章詳細(xì)介紹了HQL查詢語句的語法,以及QBC API的使用方法。合理運用Hibernate的檢索策略及檢索技巧,是提高Hibernate應(yīng)用性能的重要手段?! ?.?dāng)?shù)據(jù)庫事務(wù)、并發(fā)、緩存與性能優(yōu)化  第12章先介紹了數(shù)據(jù)庫事務(wù)的概念,接著介紹了運用Hibernate API來聲明事務(wù)邊界的方法,接著介紹在并發(fā)環(huán)境中出現(xiàn)的各種并發(fā)問題,然后介紹了采用Hibernate的悲觀鎖,以及版本控制功能來避免并發(fā)問題的方法?! 〉?3章介紹了Hibernate的二級緩存機制,并介紹了如何根據(jù)實際需要來配置Hibernate的第二級緩存,以提高應(yīng)用的性能?! ?.Hibernate高級配置  第18章介紹了Hibernate應(yīng)用的兩種運行環(huán)境:受管理環(huán)境與不受管理環(huán)境,然后介紹了在這兩種環(huán)境中配置數(shù)據(jù)庫連接池及SessionFactory實例的方法。  8.綜合實例  第19章和第20章介紹了一個名為netstore應(yīng)用的電子商務(wù)網(wǎng)站的實例,netstore應(yīng)用利用Struts作為Java Web框架,用Hibernate來完成對象持久化的任務(wù),并且分別用普通的JavaBean及EJB組件來實現(xiàn)業(yè)務(wù)邏輯。  9.附錄  本書的附錄介紹了標(biāo)準(zhǔn)SQL語言的主要用法、Java的反射機制、XDoclet工具的用法,以及netstore應(yīng)用的發(fā)布和運行過程。在介紹標(biāo)準(zhǔn)SQL語言和Java反射機制時,都不是泛泛而談,而是有針對性地介紹了與Hibernate緊密相關(guān)的知識,如SQL連接查詢,以及運用Java反射機制來實現(xiàn)持久化中間件的基本原理。  本書的范例程序  為了使讀者不但能掌握用Hibernate來持久化Java對象的理論,并且能迅速獲得開發(fā)Hibernate應(yīng)用的實際經(jīng)驗,徹底掌握并會靈活運用Hibernate技術(shù),本書為每一章都提供了完整的Hibernate應(yīng)用范例,在本書附贈光盤中包含了所有范例源文件?! 榱朔奖愠鯇W(xué)者順利地運行本書的范例,光盤上提供的所有范例程序都是可運行的。讀者只要把它們拷貝到本地機器上,就能夠運行,不需要再做額外的配置。此外,在每個范例的根目錄下還提供了ANT工具的工程文件build.xml,它用于編譯和運行范例程序?! ”緯詈筮€提供了一個完整的netstore應(yīng)用例子,它實現(xiàn)了一個購物網(wǎng)站,更加貼近實際應(yīng)用。本書以netstore應(yīng)用為例,介紹了軟件的MVC框架,控制層與模型層之間通過游離對象來傳輸數(shù)據(jù)的方式,以及模型層采用合理的檢索策略來控制檢索出來的對象圖的深度,從而優(yōu)化應(yīng)用的性能的技巧?! ∵@本書是否適合您  把Java對象持久化到關(guān)系數(shù)據(jù)庫,幾乎是所有企業(yè)Java應(yīng)用必不可少的重要環(huán)節(jié),因此本書適用于所有從事開發(fā)Java應(yīng)用的讀者。Hibernate是Java應(yīng)用和關(guān)系數(shù)據(jù)庫之間的橋梁,閱讀本書,要求讀者具備Java語言和關(guān)系數(shù)據(jù)庫的基礎(chǔ)知識?! ∪绻情_發(fā)Hibernate應(yīng)用的新手,建議按照本書的先后順序來學(xué)習(xí)。您可以先從簡單的Hibernate應(yīng)用實例下手,把握開發(fā)Hibernat應(yīng)用的大致流程,然后逐步深入地了解把對象模型映射到關(guān)系數(shù)據(jù)模型的各種細(xì)節(jié)?! ∪绻呀?jīng)在開發(fā)Hibernate應(yīng)用方面有著豐富的經(jīng)驗,則可以把本書作為實用的Hibernate技術(shù)參考資料。本書深入探討了把復(fù)雜的對象模型映射到關(guān)系數(shù)據(jù)模型的各種映射方案,詳細(xì)介紹了Hibernate的HQL查詢語言的用法,并且介紹了優(yōu)化Hibernate應(yīng)用性能的各種手段,如選擇恰當(dāng)?shù)臋z索策略和事務(wù)隔離級別,以及運用版本控制和Hibernate的第二級緩存等。靈活運用本書介紹的Hibernate最新技術(shù),將使您開發(fā)Hibernate應(yīng)用更加得心應(yīng)手?! 嵺`是掌握Hibernate的好方法。為了讓讀者徹底掌握并學(xué)會靈活運用Hibernate,本書為每一章都提供了典型的范例,在本書配套光盤上提供了完整的源代碼,以及軟件安裝程序。建議讀者在學(xué)習(xí)Hibernate技術(shù)的過程中,善于將理論與實踐相結(jié)合,達到事半功倍的效果?! 」獗P使用說明  本書配套光盤包含以下目錄?! ?.software目錄  在該目錄下包含了本書內(nèi)容涉及的所有軟件的最新版本的安裝程序,包括: ?。?)Hibernate軟件包(Hibernate 2.1.7)?! 。?)Hibernate的擴展軟件包(Hibernate-extensions 2.1.3)。  (3)MySQL服務(wù)器的安裝軟件(MySQL 5.0.2)?! 。?)MySQL的驅(qū)動程序(mysql-connector-java-3.1.7)?! 。?)ANT的安裝軟件(Ant 1.5.4)?! 。?)Tomcat的安裝軟件(Tomcat 5.0.24)?! 。?)Struts軟件(Struts 1.1)?! 。?)JBoss與Tomcat的集成軟件(Jboss-3.2.1_tomcat-4.1.24)?! 。?)XDoclet軟件包(XDoclet1.2.2)。  2.sourcecode目錄  在該目錄下提供了本書所有的源程序?! 懽饕?guī)范  為了節(jié)省文章的篇幅,在本書中顯示范例的源代碼時,有時做了一些省略。對于Java類,省略顯示package語句和import語句。除了netstore應(yīng)用外,本書其他范例創(chuàng)建的Java類都位于mypack包下。對于持久化類,還省略顯示了屬性的getXXX()和setXXX()方法。對于對象-關(guān)系映射文件,省略顯示開頭的和元素。在配套光盤中可獲得完整的源代碼?! ≡诒緯峁┑腟QL語句中,表名和字段名都采用大寫形式,而SQL關(guān)鍵字,如select、from、insert、update和delete等,都采用小寫形式。  在本書中,有時把運用了Hibernate技術(shù)的Java應(yīng)用簡稱為Hibernate應(yīng)用。此外,對象和實例是相同的概念;覆蓋方法、重新定義方法,以及重新實現(xiàn)方法是相同的概念;繼承和擴展是相同的概念;表的記錄和表的數(shù)據(jù)行是相同的概念;表的字段和表的數(shù)據(jù)列是相同的概念;查詢與檢索是相同的概念;持久化類和POJO都是指其實例需要被持久化的基于JavaBean形式的實體域?qū)ο?;對?關(guān)系映射文件和映射文件是相同的概念;本書中的應(yīng)用服務(wù)器主要指J2EE服務(wù)器?! ”緯诰帉戇^程中得到了Hibernate軟件組織和SUN公司在技術(shù)上的大力支持,飛思科技產(chǎn)品研發(fā)中心負(fù)責(zé)監(jiān)制工作,此外孫璐為本書的編寫提供了有益的幫助,在此表示衷心的感謝!盡管我們盡了最大努力,但本書難免會有不妥之處,歡迎各界專家和讀者朋友批評指正。

內(nèi)容概要

  《精通Hibernate:Java對象持久化技術(shù)詳解》詳細(xì)介紹了運用目前最成熟的 Hibernate 2.1 版本進行 Java 對象持久化的技術(shù)。 Hibernate 是連接 Java 對象模型和關(guān)系數(shù)據(jù)模型的橋梁,通過本書,讀者不僅能掌握用 Hibernate 工具對這兩種模型進行映射的技術(shù),還能獲得設(shè)計與開發(fā) Java 對象模型和關(guān)系數(shù)據(jù)模型的先進經(jīng)驗。書中內(nèi)容注重理論與實踐相結(jié)合,列舉了大量具有典型性和實用價值的 Hibernate 應(yīng)用實例,并提供了詳細(xì)的開發(fā)和部署步驟。隨書附贈光盤內(nèi)容為本書所有范例源程序,以及本書涉及的軟件的最新版本的安裝程序。

作者簡介

  孫衛(wèi)琴,1997年畢業(yè)于上海交通大學(xué),隨后一直從事基于Java軟件開發(fā)工作,2003。年作為訪問學(xué)者,赴美國參與J2EE項目的研發(fā),在此期間對Java開放源代碼項目產(chǎn)生了濃厚的興趣。2002年開始Java技術(shù)領(lǐng)域的圖書創(chuàng)作。 代表著作有:《精通Hiberuate:Java對象持久化技術(shù)詳解》2005; 《精通Struts:基于MVC的Java Web設(shè)計與開發(fā)》2004;《Tomcat與Java Web開發(fā)技術(shù)詳解》2004;《Java 2認(rèn)證試指南與試題解析》2002。

書籍目錄

第1章 Java對象持久化技術(shù)概述1.1 應(yīng)用程序的分層體系結(jié)構(gòu)1.2 軟件的模型1.3 直接通過JDBC API來持久化實體域?qū)ο?.4 ORM簡介1.5 實體域?qū)ο蟮钠渌志没J?.6 Hibernate API簡介1.7 小結(jié)第2章 Hibernate入門2.1 創(chuàng)建Hibernate的配置文件462.2 創(chuàng)建持久化類2.3 創(chuàng)建數(shù)據(jù)庫Schema2.4 創(chuàng)建對象-關(guān)系映射文件2.5 通過HibernateAPI操縱數(shù)據(jù)庫2.6 運行helloapp應(yīng)用2.7 小結(jié)第3章 hbm2java和hbm2ddl工具3.1 創(chuàng)建對象-關(guān)系映射文件3.2 建立項目的目錄結(jié)構(gòu)3.3 運行hbm2java工具3.4 運行hbm2ddl工具3.5 小結(jié)第4章 對象-關(guān)系映射基礎(chǔ)4.1 持久化類的屬性及訪問方法4.2 處理SQL引用標(biāo)識符4.3 創(chuàng)建命名策略4.4 設(shè)置命名Schema4.5 設(shè)置類的包名4.6 運行本章的范例程序4.7 小結(jié)第5章 映射對象標(biāo)識符5.1 關(guān)系數(shù)據(jù)庫按主鍵區(qū)分不同的記錄5.2 Java語言按內(nèi)存地址區(qū)分不同的對象5.3 Hibernate用對象標(biāo)識符(OID)來區(qū)分對象5.4 Hibernate的內(nèi)置標(biāo)識符生成器的用法5.5 映射自然主鍵5.6 小結(jié)第6章 映射一對多關(guān)聯(lián)關(guān)系……第7章 操縱持久化對象第8章 映射組成關(guān)系第9章 Hibernate的映射類型第10章 Hibernate的檢索策略第11章 Hibernate的檢索方式第12章 數(shù)據(jù)庫事務(wù)與并發(fā)第13章 管理Hibernate的緩存第14章 映射繼承關(guān)系第15章 Java集合類第16章 映射值類型集合第17章 映射實體關(guān)聯(lián)關(guān)系第18章 Hibernate高級配置第19章 Hibernate與Struts框架第20章 Hibernate與EJB組件附錄A 標(biāo)準(zhǔn)SQL語言的用法附錄B Java語言的反射機制附錄C 用XDoclet工具生成映射文件附錄D 發(fā)布和運行netstore應(yīng)用參考文獻

媒體關(guān)注與評論

  全書結(jié)合具體的實例,以獨特的“孫氏風(fēng)格”細(xì)致地介紹了每種技術(shù)的運用方法和適用場合,并且對常見的問題做了特別提示?! ≌Z言明朗流暢,內(nèi)容前后貫通,技術(shù)循序漸進,結(jié)您完美的閱讀感受?! ∨涮坠獗P提供了書中范例的完整源代碼,您可以輕松部署并運行通過,提前體驗成功的快感?! 【C合案例netstore應(yīng)用利用了Struts+hibernate+EJB技術(shù),讓您迅速獲得運用當(dāng)前最流行的技術(shù)來開發(fā)企業(yè)級J2EE應(yīng)用的實際經(jīng)驗。

編輯推薦

  《精通Hibernate:Java對象持久化技術(shù)詳解》絕不只是本相當(dāng)不錯的參考手冊,更是本真正提高程序員功力的書,是Java開發(fā)人員必備之書!?。   毒℉ibernate:Java對象持久化技術(shù)詳解》全書結(jié)合具體的實例,以獨特的“孫氏風(fēng)格”細(xì)致地介紹了每種技術(shù)的運用方法和適用場合,并且對常見的問題做了特別提示?! ≌Z言明朗流暢,內(nèi)容前后貫通,技術(shù)循序漸進,結(jié)您完美的閱讀感受?! ∨涮坠獗P提供了書中范例的完整源代碼,您可以輕松部署并運行通過,提前體驗成功的快感?! 【C合案例netstore應(yīng)用利用了Struts+hibernate+EJB技術(shù),讓您迅速獲得運用當(dāng)前最流行的技術(shù)來開發(fā)企業(yè)級J2EE應(yīng)用的實際經(jīng)驗?! ibernate 是非常流行的對象-關(guān)系映射工具。  《精通Hibernate:Java對象持久化技術(shù)詳解》無論對于 Java 開發(fā)的新手還是行家來說,都是精通 Java 對象持久化技術(shù)的必備實用手冊。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    精通Hibernate PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7