閱讀42 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java Persistence with Hibernate中文版Hibernate實戰第2版出版

Java Persistence with Hibernate中文版Hibernate實戰第2版出版


圖靈出版社官方Hibernate實戰(第2版)鏈接為:
https://www.turingbook.com/Books/ShowBook.aspx?BookID=260

書  名: Hibernate實戰(第2版)
評論星級: ****
書  號: 978-7-115-17448-2
原 書 名: Java Persistence with Hibernate
原出版社: Manning Publications
叢 書 名: 圖靈程序設計叢書
分  類: 計算機 >> 程序設計 >> Java
作  者: Christian Bauer, Gavin King
譯  者: 楊春花 彭永康 俞黎敏
出版日期: 2008年3月
語  種: 簡體中文
開  本: 16開
頁  數: 640
定  價: 99.00 元人民幣

摘要
  本書全麵講述了Hibernate和Java Persistence,並對兩者進行了詳細的對比分析。書中通過一個應用將數百個例子融合起來,不僅深入剖析了Hibernate 3.2和Java Persistence豐富的編程模型,還深刻闡述了數據庫設計、對象/關係映射(ORM)和優化等方麵的基本原則、策略和最佳實踐。書中處處閃爍著作者超凡的真知灼見,將大大升華讀者對ORM乃至企業級應用開發的理解。
  本書適合廣大的開發人員,從ORM的初學者到經驗豐富的開發人員。

序言
第1版序
  毋庸置疑,關係數據庫是現代企業的核心。
  包括Java在內的現代程序設計語言,提供了應用程序級業務實體的直觀、麵向對象的視圖,但這些業務實體底層的企業數據本質上是密切相關的。此外,相對於早期的導航模型以及後來的OODB模型,關係模型的主要優勢在於,它被設計為與其提供數據的編程處理和應用程序級視圖在本質上是無關的。
  許多人已經做了很多嚐試來搭建關係和麵向對象技術之間的橋梁,或者用一個取代另一個,但是這兩者之間的差異是當今企業計算麵臨的難點之一。通過其ORM方法,Hibernate架起了關係型數據和Java對象之間的橋梁。Hibernate是以一種非常實際、直接並且現實的方式來迎合這一挑戰的。
  正如Christian Bauer和Gavin King在書中所述,除了最簡單的企業環境之外,最有效地應用ORM技術要求理解關係型數據和對象以及它們之間的中介的工作原理,並對中介進行配置。這要求開發人員通曉應用程序及其數據需求,以及SQL查詢語言、關係存儲結構和關係技術提供的最優化潛能。
  Hibernate不僅提供了一個應對這些需求的功能齊全的解決方案,而且還提供了一個靈活的可配置的架構。Hibernate開發人員專注於設計,並使它具有模塊化、可熱插拔、可擴展以及可用戶定製等特點。結果,在它最初發布的幾年裏,Hibernate迅速變成了企業開發人員所適用的一種前沿ORM技術——這也是理所當然的。
  本書全麵概括了Hibernate,涵蓋了如何利用它的類型映射能力和工具來為關聯和繼承建模;如何利用Hibernate查詢語言有效地獲取對象;如何在托管和非托管環境下配置Hibernate;以及如何使用它的工具。此外,本書還提供了對ORM深層問題和Hibernate背後設計選擇的深刻見解。這些見解可以讓讀者對ORM作為一種企業技術的有效應用有深刻的理解。
  Hibernate in Action是當今企業計算中利用Hibernate和ORM的權威指南。

                                  Linda Demichiel
                               (Sun公司,EJB首席架構師)


第2版序
  兩年前,Hibernate in Action一出版就被公認為是關於Hibernate的權威性圖書,同時它也成為了ORM(對象/關係映射)方麵的權威之作。
  之後,持久化(persistence)的前景也隨著JPA(Java Persistence API)的發布而改變,這個新標準用以解決Java EE和Java SE的ORM,並在Java Community Process的主導下開發,成為EJB 3.0規範的一部分。
  在JPA的開發過程中,EJB 3.0專家組從已經在Java社區應用的ORM框架的經驗中受益頗豐。Hibernate作為先驅者之一,已經對Java Persistence技術的導向產生了非常顯著的影響力。這不僅是由於有Gavin King和EJB 3.0標準化成果的其他Hibernate團隊成員的參與,很大程度上還歸功於Hibernate帶給ORM的直接且實用的方法,以及其API的簡單、清楚和強大——因此它們的結果激勵了Java社區。
  除了對Java Persistence的貢獻之外,Hibernate的開發人員還使得Hibernate有了很大進展,這體現在本書所描述的Hibernate 3中。這些進展包括支持對大型數據集的操作、特別適用處理遺留數據庫的額外和更複雜的映射選項、數據過濾器、管理對話的策略,以及與利用JSF和EJB 3.0進行Web應用程序開發的新框架Seam的集成。
  因此,本書遠遠不隻是Hibernate in Action的第2版。它全麵概括了所有JPA的功能和Hibernate 3的功能,並對這兩者進行了詳細的對比分析。它描述了如何使用Hibernate實現Java Persistence標準,以及如何利用Hibernate擴展來實現Java Persistence。
  更重要的是,在介紹Hibernate和Java Persistence的過程中,Christian Bauer和Gavin King舉例並解釋了在設計和使用ORM框架時需要考慮到的一些基本原則和決策。他們對ORM深層問題的深刻見解,讓讀者對於ORM作為一種企業技術的有效應用有了深刻的理解。
  因此,本書適合廣大的開發人員,從ORM的初學者到經驗豐富的開發人員,幫助他們學習更多在Java社區中已經出現和正在繼續出現的尖端技術。

                                  Linda Demichiel
                       (Sun公司規範主管,EJB 3.0和Java Persistence首席架構師)

推 薦 序 一
  Hibernate持久化框架已經誕生6年了,在這期間,Hibernate從當初不為人知的開源軟件,到現在成為Java編程語言在操作關係數據庫方麵的持久化框架的統治者,不能不說是一個奇跡。
  Java的持久化操作最早要追溯到1996年發布的JDBC接口。當時,JDBC是一個借鑒了ODBC標準,采用純Java編寫的數據庫持久化接口。因為JDBC可以用同樣的方式存取大多數主流關係數據庫,可以做到操作係統無關、數據庫無關、純Java編寫,且具備良好的可移植性,因此JDBC發布之後獲得了極大的成功,時至今日,它還是Java程序員最常用的API之一。但是對程序員來說,JDBC API顯得非常笨拙,如果數據庫字段比較多,編寫起來非常麻煩,代碼量很大,而且不容易維護。因此,為了簡化JDBC編程,隨後又出現了很多基於JDBC的持久化框架,而Hibernate正是其中的佼佼者。
  在Hibernate出現之前,最主流的持久化框架是1999年發布的EJB 1.1的實體bean,特別是在2001年EJB 2.0規範引入本地接口之後,一直到2003年,實體bean變得非常流行,成為應用服務器廠商力推的產品賣點之一。這段時間Java企業應用開發言必稱EJB,好像不用EJB都顯得不入流,你都不好意思說自己是Java高級程序員。但是,實體bean在持久化方麵並沒有起到積極的作用,反而極大增加了持久化代碼的複雜度,因而逐漸被越來越多的開發人員反對和拋棄。
  2001年,澳大利亞墨爾本一位名為Gavin King的27歲Java程序員,上街買了一本SQL編程的書,他厭倦了實體bean,認為自己可以開發出一個符合對象關係映射理論,並且真正好用的Java持久層框架,因此他需要先好好學習一下SQL。這一年的11月,Hibernate的第一個版本發布了。在整個2002年,實體bean還是萬眾矚目的焦點,但是已經有很多人開始關注和使用Hibernate了。
  2003年9月,Hibernate開發團隊進入JBoss公司,開始全職開發Hibernate,從這個時候開始,Hibernate得到了突飛勐進的普及和發展。2004年,整個Java社區開始從實體bean向Hibernate轉移,特別是在Rod Johnson的著作Expert One-on-One J2EE Development without EJB出版後,由於這本書以紮實的理論、充分的論據和翔實的論述否定了EJB,提出了輕量級敏捷開發理念之後,以Hibernate和Spring為代表的輕量級開源框架開始成為Java世界的主流和事實標準,Hibernate開始大紅大紫。在2004年Sun領導的J2EE 5.0標準製定委員會當中,Gavin King已經是實體bean下一代標準的主要製定者,而J2EE 5.0標準當中的持久化框架標準正是以Hibernate為藍本的。當2006年J2EE 5.0標準正式發布以後,持久化框架標準Java Persistent API(簡稱JPA)基本上是參考Hibernate實現的,而Hibernate從3.2版本開始,已經完全兼容JPA標準,成為最主流的JPA框架。
  我是在2003年3月知道Hibernate框架的,當時我正在尋找一個可以替代實體bean的Java持久層框架,在考察了眾多開源項目之後,發現Hibernate正是可以滿足我需求的框架,因此在隨後的幾個項目當中使用了Hibernate,並且獲得了比較滿意的效果。在2003年,雖然Hibernate在國外已經是非常有名氣的Java開源框架,但是企業應用開發的主流仍然是EJB,因此國內的Java社區非常排斥這種既非J2EE官方標準,又沒有大廠商支持的“草根”框架Hibernate。由於找不到一個可以交流Hibernate編程經驗的地方,我萌生了自己創建一個Hibernate交流社區的想法,並在2003年9月11日淩晨正式開通了公共交流論壇,這就是JavaEye網站誕生的由來。JavaEye在2003年是國內唯一交流Hibernate的技術網站,不誇張地說,為國內推廣和普及Hibernate立下了汗馬功勞,影響了一大批Java開發人員。時至今日,JavaEye網站已經成為國內僅次於CSDN的第二大軟件開發者交流社區。雖然JavaEye早已經不再是一個單純的Hibernate技術討論區,但是當初如果沒有Hibernate的緣故,今天就不會有JavaEye網站了。
  根據我四年多的Hibernate編程經驗,Hibernate並不是一個非常易學易用的框架,它的掌握難度要遠遠高於同樣十分流行的Spring框架。由於對象的持久化操作本身就包含非常多的概念和難點,運用不善還很容易導致性能低下,因此盡管現在Hibernate在國內已經非常普及和流行了,幾乎每個軟件公司在招聘Java程序員的時候都要求掌握Hibernate,但實事求是地講,能把Hibernate用好的Java程序員鳳毛麟角,在JavaEye網站上對Hibernate的置疑聲音也從來就沒有停歇過。其實善於使用Hibernate,能把Hibernate用好的案例也有不少,比如Google公司就在一些非常大規模的項目當中使用了Hibernate和WebWork框架(有傳言說是Adwords項目,但我沒有考證過),並且貢獻了基於Hibernate的Hibernate Shards開源項目和從WebWork項目當中抽取出來的Google Guice開源項目。
  因此要想把Hibernate用好,對於Hibernate框架的很多重要的運用細節需要非常的了解和熟悉,除了在項目當中摸索和總結Hibernate使用經驗之外,由Gavin King共同執筆編寫的這本書就是最好和最權威的Hibernate指南。這本書的第1版叫做Hibernate in Action,在Amazon上銷量很好,但是由於版權問題,很遺憾未能引入國內。而本書的第2版,即現在這版已經是結合了最新的JPA標準的Hibernate指南,既詳細講述JPA標準的方方麵麵,又講述Hibernate框架的各個重要的細節用法,不但對於使用Hibernate的開發人員來是不可或缺的參考書,同樣對於使用其他JPA實現的開發人員來說,也是重要的參考。

                      範凱(Robbin),JavaEye網站創始人
                    https://www.JavaEye.com


推 薦 序 二
  Hibernate自2001年誕生以來,在Java的ORM領域幾乎已經成為事實的標準。“掌握Hibernate”已經近乎成為使用Java的軟件公司招聘程序員的一個基本要求。之所以形成這一流行做法,有Hibernate本身優秀的理念、成熟的設計與廣泛的正麵使用體驗的因素,也有Hibernate本身的開源、免費的因素,尤其重要的是它包含內容豐富、更新及時的文檔。
  正因為Hibernate本身基於LGPL開源,我翻譯了其2.0版本的文檔。該文檔在網上公開後獲得了始料未及的反應,並且由於Hibernate社區的開放性,它被作為Hibernate文檔的正式中文翻譯版本納入了其源代碼管理,這是對我翻譯工作的最好肯定。正因為其廣泛的流傳,在Hibernate 3.0版本發布的時候,得以組織起20餘人的團隊,在短短的三周時間內就推出了經過審校的質量相當高的文檔翻譯版本,並且不斷根據新版本的發布進行更新。僅在“滿江紅”主站,這一版本就有超過15萬次的PDF下載量,HTML版本訪問量更是數百萬次計。這一中文版本的文檔形成了學習Hibernate的良好氛圍,對其普及做出了極為重要的貢獻,也直接促成了“滿江紅開放技術研究組織”的成立,同時對後續的很多文檔的發布產生了非常積極的示範效應。
  但是,官方文檔僅有200餘頁,著重描述的是對其使用參數的設置說明,以及對HQL、關聯等概念的使用說明,解釋“如何做”而非“為何要這樣做”,這對廣大學習者仍然有較大的學習障礙。Hibernate的原作者Gavin King和Christian Bauer編寫了Hibernate in Action(即《Hibernate實戰》第1版)一書對其進行了詳細的解釋。該書英文版一推出,我們就開始了翻譯工作,但是後來因版權問題,沒能第一時間引進,這實在是一大憾事。
  你現在手中的這本《Hibernate實戰(第2版)》就是對Hibernate in Action的深化升級。這本書的優點在於其實用性,加入了大量的圖片和示例輔助說明,比Hibernate隨附的文檔要清晰明了得多,其英文版我也一直放在電腦包中隨身攜帶,作為速查手冊使用。這是一本“高級版文檔”和權威的學習指南。
  本書是由俞黎敏組織並翻譯、審校的。俞黎敏長期工作在開發第一線,對Hibernate有深刻的理解,是“滿江紅”的管理員之一,也是Gavin King新項目Seam的中文文檔翻譯負責人。他對本書的理解相當到位,翻譯準確度很高。本書正彌補了當初沒有能成功引進Hibernate in Action的遺憾。在此對他表示由衷的祝賀。
  Java作為目前的主流開發語言,Hibernate和JPA仍然具有長期的生命力。希望本書能夠進一步推進Hibernate和JPA在國內的應用。

                      曹曉鋼
                “滿江紅開放技術研發組織”共同創始人
                    https://www.redsaga.com



前言
第1版前言
  不能隻因為某人能用鼻子把細枝沿地麵向前推,就認為那就是收集柴火的最好辦法。——Anthony Berglas
  今天,許多軟件開發人員都用企業信息係統(EIS)。這種應用程序創建、管理和存儲結構化信息,並在多個物理位置的許多用戶之間共享信息。
  EIS數據存儲涉及大量使用基於SQL的數據庫管理係統。我們曾經工作的每家公司至少都用一個SQL數據庫;大部分公司的業務核心完全依賴關係數據庫技術。
  在過去的5年裏,Java程序語言的廣泛應用已經使軟件開發中麵向對象的範式占據了統治地位。現在,開發人員享受著麵向對象的好處。然而,大量的業務還是依賴於對昂貴的關係數據庫係統的長期投資。不僅僅是特殊的供應商產品不容易更改,而且現有遺留數據也必須可用於(且經由)這個全新的麵向對象的Web應用程序。
  然而,在關係型係統中數據的表格表示法與應用在麵向對象的Java應用程序中的對象網絡仍有本質上的不同。這種區別導致了所謂的對象/關係範式(object/relational paradigm)的不匹配。
  傳統上,這種不匹配的重要性和代價被低估了,並且解決這種不匹配的工具也不充足。同時,Java開發人員抱怨針對不匹配的關係技術;數據專家則抱怨對象技術。
  ORM是對這種不匹配問題的自動化解決方案的命名。對於厭煩了冗長乏味的數據訪問代碼的開發人員來說,好消息是ORM已經成熟了。用ORM中間件創建的應用程序會更加便宜、更高性能、更少的供應商依賴性,並且更能夠應付內部對象或者底層SQL模式的改變。令人驚異的是,這些好處現在都可以供Java開發人員免費享用。
  Gavin King於2001年後期開始開發Hibernate,這時他發現流行的持久化解決方案——CMP Entity Beans——還沒有發展成帶有複雜數據模型的重要應用程序。Hibernate開始了作為一個獨立的、非商業的、開源項目的生涯。
  Hibernate團隊(包括作者)通過勤奮的實踐已經掌握了ORM——也就是說,通過聆聽用戶需求並實現滿足這些需求所需要的東西。結果,Hibernate成了一個實用的解決方案,增進了開發人員的生產力和技術領導能力。Hibernate已經被數以萬計的用戶使用,並且用到了數以千計的生產應用中。
  當那個時代的需求變得勢不可擋時,Hibernate團隊斷定這個項目未來的成功(和Gavin持續的明智)要求專業開發人員將全部精力投入到Hibernate。Hibernate在2003年後期加入了jboss.org,現在具有了商業特征。可以從JBoss公司購買商業支持和培訓,但是商業培訓不應該是學習Hibernate的唯一途徑。
  很明顯,許多(可能甚至大多數)Java項目都受益於ORM解決方案(如Hibernate)的使用,雖然這在幾年前還不明顯。隨著ORM技術日益成為主流,產品文檔(如Hibernate的免費用戶手冊)已不再充足。我們認識到Hibernate社區和新的Hibernate用戶需要一本全麵的圖書,不僅僅學習利用Hibernate來開發軟件,還要理解和領悟對象/關係的不匹配,以及Hibernate設計背後的動機。
  本書是我們利用一年多所有空閑時間努力創作的結晶,也是許多激烈辯論和學習經驗的來源。我們希望本書成為關於Hibernate的優秀指南(即“Hibernate聖經”,如一位評論家所言),並且大體上也是對象/關係不匹配和ORM的第一個全麵的文檔。
  希望你會發現它對你有所幫助,並且喜歡用Hibernate工作。



第2版前言
  本書第1版Hibernate in Action的前言開始引用了Anthony Berglas的話:“不能隻因為某人能用鼻子把細枝沿地麵向前推,就認為那就是收集柴火的最好辦法。”自第1版出版後,軟件開發人員賴以管理信息的Hibernate項目和策略以及理念都得到了進一步發展。然而,基本的問題仍然一樣——我們每天打交道的每家公司仍然在使用SQL數據庫,並且Java在行業中成了企業應用程序開發的首選。
  在關係型係統中數據的表格表示法與用於麵向對象的Java應用程序的對象網絡仍有本質上的區別。我們仍然看到對象/關係不匹配,而且經常看到這種不匹配的重要性和代價被低估了。
  另一方麵,我們現在有各種各樣的工具和解決方案可用於處理這個問題。我們已經撿好了柴火,並且袖珍打火機也換成了火焰投射器。
  現在Hibernate已經準備好了第3次重要的發布,Hibernate 3.2就是本書所講述的版本。相比Hibernate的老版本,這個全新的重要發布具有兩倍的特性——因此本書的厚度也幾乎是Hibernate in Action的兩倍。其中大部分特性都是包括你在內的每天使用Hibernate的開發人員所需要的。有時我們說,Hibernate能解決Java應用程序開發人員在創建數據庫應用程序時必須處理的所有問題的90%。有了最新的Hibernate版本,這個數字就接近99%了。
  隨著Hibernate的成熟以及其用戶基數和社區的不斷成長,許多開發人員發現缺少數據管理和數據庫應用程序開發的Java標準。我們甚至在Hibernate in Action中告訴過你不要使用的EJB 2.x的實體bean。
  下麵談談EJB 3.0和新的Java Persistence標準。這個新的行業標準對Java開發者社區而言是向前邁出了重要的一步。它定義了一個輕量級、簡化的編程模型和強大的對象/關係持久化。這個新標準的許多關鍵理念都模仿Hibernate和其他成功的對象/關係持久化方案。最新的Hibernate版本實現了Java Persistence標準。
  因此,除了這個新的集各種功能於一身的Hibernate之外,現在你可以像使用其他Java Persistence提供程序(provider)一樣使用Hibernate,不管是否使用其他EJB 3.0組件和Java EE 5.0服務。Hibernate與這麼一個豐富的編程模型的深入整合,使你能夠設計和實現以前用手工難以創建的應用程序功能。
  本書旨在提供一個對Hibernate和Java Persistence(以及所有相關的EJB 3.0理念)完整而準確的指南。希望你會喜歡學習Hibernate,並且把本書放在案頭作為每日工作的參考。

網上書店購買(會陸續增加)
第二書店:https://www.dearbook.com.cn/book/246425

最後更新:2017-04-02 00:06:27

  上一篇:go 中國第一程序員--求伯君
  下一篇:go [原創]溫習一個 C# Project : KsPlanMon