我們在這本書中介紹了物件/關聯式詞形的不協調,且給了你一個對於這個費時問題現有解決方案高階的概觀。你會學習如何使用Hibernate作為永續層,伴隨著在一個單一,連續的範例程式中豐富的領域物件模型。這個永續層的實作包含了個體聯合,類別繼承,和特別的型態對應策略。
我們會教你如何調校Hibernate物件查詢與交易系統,以達到在高度並時多人應用程式中最好的效能。Hibernate彈性的兩層快取系統也是這本書重要的主題。我們在不同的情境下討論Hibernate的整合,同時也向你展示二層或三層Java資料庫應用程式架構上的問題。如果你必須要操作已存在的SQL資料庫,你同時也會對Hibernate處理既有資料庫網要的特性與Hibernate開發工具組感興趣。
第一章定義了物件永續性。我們討論了為什麼在今日的應用程式中有著SQL介面的關聯式資料庫是永續資料的系統,而且討論為什麼使用JDBC和SQL程式碼的手寫Java永續層是費時且容易出錯的。在看完這個問題的其它解答後,我們介紹了物件/關聯式對應且討論這個方式的好與壞。
第二章有Hibernate架構的概要,且展示給你看看最重要的應用程式開發界面。且在看過了一個簡單的"Hello World"應用程式之後,我們展示了Hibernate在被管理(和非被管理)J2EE和J2SE的組態。
第三章介紹了範例應用程式與各種個體與資料庫網要的關聯對應,包含了單向和雙向的聯合,類別繼承和合成。你將會學習如何撰寫Hibernate對應檔和如何設計永續類別。
第四章教你Hibernate的介面以操作讀取和儲存運算;我們也向你展示了在Hibernate內的過渡永續(依可觸及性的永續)。這一章專注於用最有效率的方式來載入或儲存物件。
第五章討論並時資料存取,資料庫與長時執行的應用程式交易。我們介紹了鎖定與資料版本的概念。我們也包含了一般的快取與Hibernate的快取系統,這和並時資料存取非常相關。
第六章使用更多進階對應概念補完你對Hibernate對應技巧的了解,如同使用者自訂型別,值的聯合,與一對一和多對多聯合的對應。我們也簡單的討論了Hibernate完整多型的行為。
第七章介紹了Hibernate查詢語言(HQL)與其它依照標準查詢(QBC)API的查詢方式,這是個型別安全的方式來表達物件查詢。我們向你展示如何將你的應用程式中複雜的查詢對話框轉換成依照範例來查詢(QBE)的查詢。藉著合併這三種特性,你會得到完整Hibernate查詢的能力;我們也向你展示在特別的情形如何使用直接SQL呼叫,與如何最佳化查詢的效能。
第八章描述了一些Hibernate應用程式架構基本的常規。這包含了對 SessionFactory 的管理,被廣泛採用的 ThreadLocal Session 樣式,與封裝永續層的功能進資料存取物件(DAO)和J2EE的命令。我們向你展示如何設計長時期執行應用程式交易與如何讓Hibernate支援創新的分離物件。我們也討論監聽日誌與傳統資料庫綱要。
第九章介紹了一些不同的開發方案,與在每一種情境可以使用的工具。我們向你展示了一般技術上的陷阱且討論了Hibernate工具組(hbm2ddl, hbm2java),且與普遍的開放源始碼如XDoclet與Middlegen之間的整合。
讀這本書的讀者應該有基本物件導向應用程式的開發的基礎,且應該在實作中使用這些知識。要了解範例應用程式,你應該要熟悉Java程式語言與統一模型語言。
我們主要的讀者群是操作SQL為主資料庫系統的Java程式設計師。我們會向你展示如何利用ORM的影響大大地增進產值。
如果你是一個資料庫開發者,這本書可以是介紹你物件導向應用程式開發的一部份。
如果你是一個資料庫管理師,你將會對ORM如何影響效能感興趣,且你要如何調校SQL資料庫管理系統與永續層以達到效能的目標。因為資料存取是大部份Java應用程式的瓶頸,這本書很仔細地討論了效能的議題。許多DBA可理解地對工具產生的SQL程式碼的效能感到緊張;我們試圖緩和這種不安,與強調在何種情形下應用程式不應該使用工具管理的資料存取。你可能已經放心地發現,我們不會聲稱ORM是所有問題的最好方案。
這本書提供了大量的範例,包含了所有Hibernate應用程式的加工品:Java應用程式,Hibernate組態檔,與XML對應後設資料。在條列中的原始碼或在文字中是以固定長度的字型 like this 來和其它一般文字區別。另外,Java函數名稱,元件參數,物件屬性,與XML元素與屬性等文字也會用固定長度的字型表達。
Java,HTML和XML都可以很冗長。在很多情形,原始程式碼(可以上線的)都被重新格式化過;我們加入了分行與重新縮排以符合能在這本書的頁面空間下放置。在很少的情形,如果這樣還不夠,條列會包含繼續前一行的標記。另外,在原始碼的註解已經被從條列中移除。
程式碼註解伴隨許多原始碼的條列,強調重要的概念。在一些情形,在條列後方會有標好號碼的條列連結。
Hibernate是一個開放源始碼的專案,基於Lesser GNU Public License。Hibernate的下載目錄,依照原始碼或二進位形式,都可以從Hibernate的網站上得到: www.hibernate.org/ 。
所有CaveatEmptor範例程式的原始碼可以 從 http://caveatemptor.hibernate.org/
中得到。CaveatEmptor範例應用程式在這個網站有不同的方式取得:舉例而言,使用servlet或用EJB部署,與使用或者不使用表現層。然而只有標準永續層的套件才是這本書最建議的指南。
一本即將出版的書,由Patrick Lightbody et al.所寫的Webwork實作手冊,是這本書的好伙伴。這兩本書都用CaveatEmptor的範例程式,且你將會學習到如何使用WebWork撰寫表現層而用Hibernate寫作永續層。兩本書的範例程式碼都可以在CaveatEmptor網站上下載。
Christian Bauer是Hibernate核心開發小組的一員,他維護了Hibernate文件與網站。Christian對關聯式資料庫系統與Java應用程式中健全的資料管理感興趣,他是一個JBoss公司的程式設計師與顧問,現在住在德國法蘭克福。
Gavin King是Hibernate的創立者且為主要的開發者。他是迅捷開發與開放源始碼軟體的熱忱擁護者。身為EJB3專業團隊的一員,Gavin正在幫忙整合ORM技術到J2EE的標準之中。他是在澳洲墨爾本一個JBoss公司的程式設計師與J2EE顧問。
何孟翰是Hibernate的愛好者,專長是資料庫管理與開發,架構J2EE應用程式伺服器與J2EE程式設計開發。他是一個在台灣台北的軟體工程師,近來專注於伺服器端應用程式開發,與J2EE應用程式伺服器與開放源始碼專案之間的整合。