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

阿敏總司令發表於2008-03-26
Java Persistence with Hibernate中文版Hibernate實戰第2版出版
[img]http://lh3.google.com/iamin83567/R-oc--J9cDI/AAAAAAAABHo/qu0PC-syvKc/JavaPersistenceWithHibernateCoverBig.jpg?imgmax=512[/img]

圖靈出版社官方Hibernate實戰(第2版)連結為:
[url]http://www.turingbook.com/Books/ShowBook.aspx?BookID=260[/url]

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

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

[b]序言[/b]
第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網站創始人
                    [url]http://www.iteye.com[/url]


推 薦 序 二
  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在國內的應用。

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


[b]前言[/b]
第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,並且把本書放在案頭作為每日工作的參考。

[b]樣章免費試讀:[/b][url]http://book.csdn.net/bookfiles/670/index.html[/url]

[b]網上書店購買:[/b]
中國互動出版網china-pub:[url]http://www.china-pub.com/39339[/url]

噹噹商店:[url]http://product.dangdang.com/product.aspx?product_id=20176084[/url]

第二書店:[url]http://www.dearbook.com.cn/book/246425[/url]

華儲網:[url]http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=10075520[/url]

電子工業出版社:暫無

卓越亞馬遜:[url]http://www.amazon.cn/mn/detailApp?qid=1207478964&ref=SR&sr=1-2&uid=168-9862294-4341803&prodid=bkbk823242[/url]

新風雨:[url]http://www.cnforyou.com/query/bookdetail1.asp?viBookCode=9015[/url]

蔚藍網:[url]http://www.wl.cn/3280161[/url]


Java Persistence with Hibernate中文版Hibernate實戰第2版勘誤
[url]http://yulimin.iteye.com/blog/179802[/url]

相關文章