出版時(shí)間:2008-4 出版社:人民郵電出版社 作者:Christian Bauer,Gavin King 頁數(shù):608
Tag標(biāo)簽:無
前言
兩年前,Hibernate in Action一出版就被公認(rèn)為是關(guān)于Hibernate的權(quán)威性圖書,同時(shí)它也成為了ORM(對象/關(guān)系映射)方面的權(quán)威之作?! ≈?,持久化(persistence)的前景也隨著JPA(Java Persistence API)的發(fā)布而改變,這個(gè)新標(biāo)準(zhǔn)用以解決Java EE和Java SE的ORM,并在Java Community Process的主導(dǎo)下開發(fā),成為EJB 3.0規(guī)范的一部分。 在JPA的開發(fā)過程中,EJB 3.0專家組從已經(jīng)在Java社區(qū)應(yīng)用的ORM框架的經(jīng)驗(yàn)中受益頗豐。Hibernate作為先驅(qū)者之一,已經(jīng)對Java Persistence技術(shù)的導(dǎo)向產(chǎn)生了非常顯著的影響力。這不僅是由于有Gavin King和EJB 3.0標(biāo)準(zhǔn)化成果的其他Hibernate團(tuán)隊(duì)成員的參與,很大程度上還歸功于Hibernate帶給ORM的直接且實(shí)用的方法,以及其API的簡單、清楚和強(qiáng)大——因此它們的結(jié)果激勵(lì)了Java社區(qū)?! 〕藢ava Persistence的貢獻(xiàn)之外,Hibernate的開發(fā)人員還使得Hibernate有了很大進(jìn)展,這體現(xiàn)在本書所描述的Hibernate 3中。這些進(jìn)展包括支持對大型數(shù)據(jù)集的操作、特別適用處理遺留數(shù)據(jù)庫的額外和更復(fù)雜的映射選項(xiàng)、數(shù)據(jù)過濾器、管理對話的策略,以及與利用JSF和EJB 3.0進(jìn)行Web應(yīng)用程序開發(fā)的新框架Seam的集成?! ∫虼耍緯h(yuǎn)遠(yuǎn)不只是Hibernate in Action的第2版。它全面概括了所有JPA的功能和Hibernate 3的功能,并對這兩者進(jìn)行了詳細(xì)的對比分析。它描述了如何使用Hibernate實(shí)現(xiàn)Java Persistence標(biāo)準(zhǔn),以及如何利用Hibernate擴(kuò)展來實(shí)現(xiàn)Java Persistence?! 「匾氖?,在介紹Hibernate和Java Persistence的過程中,Christian Bauer和Gavin King舉例并解釋了在設(shè)計(jì)和使用ORM框架時(shí)需要考慮到的一些基本原則和決策。他們對ORM深層問題的深刻見解,讓讀者對于ORM作為一種企業(yè)技術(shù)的有效應(yīng)用有了深刻的理解?! ∫虼耍緯m合廣大的開發(fā)人員,從ORM的初學(xué)者到經(jīng)驗(yàn)豐富的開發(fā)人員,幫助他們學(xué)習(xí)更多在Java社區(qū)中已經(jīng)出現(xiàn)和正在繼續(xù)出現(xiàn)的尖端技術(shù)?! inda Demichiel(Sun公司規(guī)范主管,EJB 3.0和Java Persistence首席架構(gòu)師)
內(nèi)容概要
《圖靈程序設(shè)計(jì)叢書·Hibernate實(shí)戰(zhàn)(第2版)》是毋庸置疑的Hibernate和ORM(對象/關(guān)系映射)權(quán)威著作,由包括Hibernate之父在內(nèi)的兩位核心開發(fā)人員親自執(zhí)筆,詳細(xì)講述了Hibernate 3.2、Java Persistence和EJB 3.0標(biāo)準(zhǔn)?!秷D靈程序設(shè)計(jì)叢書·Hibernate實(shí)戰(zhàn)(第2版)》通過一個(gè)應(yīng)用將數(shù)百個(gè)例子融合起來,不僅深入剖析了Hibernate 3.2和Java Persistence豐富的編程模型。還深刻闡述了數(shù)據(jù)庫設(shè)計(jì)、ORM和優(yōu)化等方面的基本原則、策略和最佳實(shí)踐。書中處處閃爍著作者超凡的真知灼見,將大大升華讀者對ORM乃至企業(yè)級應(yīng)用開發(fā)的理解。
作者簡介
Christian Bauer,Hibernate核心開發(fā)人員,并負(fù)責(zé)維護(hù)Hibernate的文檔與網(wǎng)站。目前他是Red Hat公司JBoss部門負(fù)責(zé)Hibernate、EJB 3.0和Seam的產(chǎn)品經(jīng)理。
書籍目錄
第一部分 從Hibernate和EJB 3.0開始第1章 理解對象/關(guān)系持久化1.1 什么是持久化1.1.1 關(guān)系數(shù)據(jù)庫1.1.2 理解SQL1.1.3 在Java中使用SQL1.1.4 面向?qū)ο髴?yīng)用程序中的持久化1.2 范式不匹配1.2.1 粒度問題1.2.2 子類型問題1.2.3 同一性問題1.2.4 與關(guān)聯(lián)相關(guān)的問題1.2.5 數(shù)據(jù)導(dǎo)航的問題1.2.6 不匹配的代價(jià)1.3 持久層和其他層1.3.1 分層架構(gòu)1.3.2 用SQL/JDBC手工編寫持久層1.3.3 使用序列化1.3.4 面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng)1.3.5 其他選項(xiàng)1.4 ORM1.4.1 什么是ORM1.4.2 一般的ORM問題1.4.3 為什么選擇ORM1.4.4 Hibernate、EJB 3和JPA簡介1.5 小結(jié)第2章 啟動(dòng)項(xiàng)目2.1 啟動(dòng)Hibernate項(xiàng)目2.1.1 選擇開發(fā)過程2.1.2 建立項(xiàng)目2.1.3 Hibernate配置和啟動(dòng)2.1.4 運(yùn)行和測試應(yīng)用程序2.2 啟動(dòng)Java Persistence項(xiàng)目2.2.1 使用Hibernate Annotations2.2.2 使用Hibernate EntityManager2.2.3 引入EJB組件2.2.4 切換到Hibernate接口2.3 反向工程遺留數(shù)據(jù)庫2.3.1 創(chuàng)建數(shù)據(jù)庫配置2.3.2 定制反向工程2.3.3 生成Java源代碼2.4 與Java EE服務(wù)整合2.4.1 與JTA整合2.4.2 JNDI綁定的SessionFactory2.4.3 JMX服務(wù)部署2.5 小結(jié)第3章 領(lǐng)域模型和元數(shù)據(jù)3.1 CaveatEmptor應(yīng)用程序3.1.1 分析業(yè)務(wù)領(lǐng)域3.1.2 CaveatEmptor領(lǐng)域模型3.2 實(shí)現(xiàn)領(lǐng)域模型3.2.1 處理關(guān)注點(diǎn)滲漏3.2.2 透明和自動(dòng)持久化3.2.3 編寫POJO和持久化實(shí)體類3.2.4 實(shí)現(xiàn)POJO關(guān)聯(lián)3.2.5 把邏輯添加到訪問方法3.3 ORM元數(shù)據(jù)3.3.1 XML中的元數(shù)據(jù)3.3.2 基于注解的元數(shù)據(jù)3.3.3 使用XDoclet3.3.4 處理全局的元數(shù)據(jù)3.3.5 運(yùn)行時(shí)操作元數(shù)據(jù)3.4 其他實(shí)體表示法3.4.1 創(chuàng)建動(dòng)態(tài)的應(yīng)用程序3.4.2 表示XML中的數(shù)據(jù)3.5 小結(jié)第二部分 映射概念和策略第4章 映射持久化類4.1 理解實(shí)體和值類型4.1.1 細(xì)粒度的領(lǐng)域模型4.1.2 定義概念4.1.3 識別實(shí)體和值類型4.2 映射帶有同一性的實(shí)體4.2.1 理解Java同一性和等同性4.2.2 處理數(shù)據(jù)庫同一性4.2.3 數(shù)據(jù)庫主鍵4.3 類映射選項(xiàng)4.3.1 動(dòng)態(tài)的SQL生成4.3.2 使實(shí)體不可變4.3.3 給查詢命名實(shí)體4.3.4 聲明包名稱4.3.5 用引號把SQL標(biāo)識符括起來4.3.6 實(shí)現(xiàn)命名約定4.4 細(xì)粒度的模型和映射4.4.1 映射基礎(chǔ)屬性4.4.2 映射組件4.5 小結(jié)第5章 繼承和定制類型5.1 映射類繼承5.1.1 每個(gè)帶有隱式多態(tài)的具體類一張表5.1.2 每個(gè)帶有聯(lián)合的具體類一張表5.1.3 每個(gè)類層次結(jié)構(gòu)一張表5.1.4 每個(gè)子類一張表5.1.5 混合繼承策略5.1.6 選擇策略5.2 Hibernate類型系統(tǒng)5.2.1 概述實(shí)體和值類型5.2.2 內(nèi)建的映射類型5.2.3 使用映射類型5.3 創(chuàng)建定制的映射類型5.3.1 考慮定制的映射類型5.3.2 擴(kuò)展點(diǎn)5.3.3 定制映射類型的案例5.3.4 創(chuàng)建UserType5.3.5 創(chuàng)建CompositeUserType5.3.6 參數(shù)化定制類型5.3.7 映射枚舉5.4 小結(jié)第6章 映射集合和實(shí)體關(guān)聯(lián)6.1 值類型的set、bag、list和map6.1.1 選擇集合接口6.1.2 映射set6.1.3 映射標(biāo)識符bag6.1.4 映射list6.1.5 映射map6.1.6 排序集合和有序集合6.2 組件的集合6.2.1 編寫組件類6.2.2 映射集合6.2.3 啟用雙向?qū)Ш?.2.4 避免非空列6.3 用注解映射集合6.3.1 基本的集合映射6.3.2 排序集合和有序集合6.3.3 映射嵌入式對象的集合6.4 映射父/子關(guān)系6.4.1 多樣性6.4.2 最簡單的可能關(guān)聯(lián)6.4.3 使關(guān)聯(lián)雙向6.4.4 級聯(lián)對象狀態(tài)6.5 小結(jié)第7章 高級實(shí)體關(guān)聯(lián)映射7.1 單值的實(shí)體關(guān)聯(lián)7.1.1 共享的主鍵關(guān)聯(lián)7.1.2 一對一的外鍵關(guān)聯(lián)7.1.3 用聯(lián)結(jié)表映射7.2 多值的實(shí)體關(guān)聯(lián)7.2.1 一對多關(guān)聯(lián)7.2.2 多對多關(guān)聯(lián)7.2.3 把列添加到聯(lián)結(jié)表7.2.4 映射map7.3 多態(tài)關(guān)聯(lián)7.3.1 多態(tài)的多對一關(guān)聯(lián)7.3.2 多態(tài)集合7.3.3 對聯(lián)合的多態(tài)關(guān)聯(lián)7.3.4 每個(gè)具體類一張多態(tài)表7.4 小結(jié)第8章 遺留數(shù)據(jù)庫和定制SQL8.1 整合遺留數(shù)據(jù)庫8.1.1 處理主鍵8.1.2 帶有公式的任意聯(lián)結(jié)條件8.1.3 聯(lián)結(jié)任意的表8.1.4 使用觸發(fā)器8.2 定制SQL8.2.1 編寫定制CRUD語句8.2.2 整合存儲過程和函數(shù)8.3 改進(jìn)Schema DDL8.3.1 定制SQL名稱和數(shù)據(jù)類型8.3.2 確保數(shù)據(jù)一致性8.3.3 添加領(lǐng)域約束和列約束8.3.4 表級約束8.3.5 數(shù)據(jù)庫約束8.3.6 創(chuàng)建索引8.3.7 添加輔助的DDL8.4 小結(jié)第三部分 會(huì)話對象處理第9章 使用對象9.1 持久化生命周期9.1.1 對象狀態(tài)9.1.2 持久化上下文9.2 對象同一性和等同性9.2.1 引入對話9.2.2 對象同一性的范圍9.2.3 脫管對象的同一性9.2.4 擴(kuò)展持久化上下文9.3 Hibernate接口9.3.1 保存和加載對象9.3.2 使用脫管對象9.3.3 管理持久化上下文9.4 JPA9.4.1 保存和加載對象9.4.2 使用脫管的實(shí)體實(shí)例9.5 在EJB組件中使用Java Persistence9.5.1 注入EntityManager9.5.2 查找EntityManager9.5.3 訪問EntityManagerFactory9.6 小結(jié)第10章 事務(wù)和并發(fā)10.1 事務(wù)本質(zhì)10.1.1 數(shù)據(jù)庫和系統(tǒng)事務(wù)10.1.2 Hibernate應(yīng)用程序中的事務(wù)10.1.3 使用Java Persistence的事務(wù)10.2 控制并發(fā)訪問10.2.1 理解數(shù)據(jù)庫級并發(fā)10.2.2 樂觀并發(fā)控制10.2.3 獲得額外的隔離性保證10.3 非事務(wù)數(shù)據(jù)訪問10.3.1 揭開自動(dòng)提交的神秘面紗10.3.2 使用Hibernate非事務(wù)地工作10.3.3 使用JTA的可選事務(wù)10.4 小結(jié)第11章 實(shí)現(xiàn)對話11.1 傳播Hibernate Session11.1.1 Session傳播的用例11.1.2 通過線程局部傳播11.1.3 利用JTA傳播11.1.4 利用EJB傳播11.2 利用Hibernate的對話11.2.1 提供對話保證11.2.2 利用脫管對象的對話11.2.3 給對話擴(kuò)展Session11.3 使用JPA的對話11.3.1 Java SE中的持久化上下文傳播11.3.2 在對話中合并脫管對象11.3.3 在Java SE中擴(kuò)展持久化上下文11.4 使用EJB 3.0的對話11.4.1 使用EJB的上下文傳播11.4.2 利用EJB擴(kuò)展持久化上下文11.5 小結(jié)第12章 有效修改對象12.1 傳播性持久化12.1.1 按可到達(dá)性持久化12.1.2 把級聯(lián)應(yīng)用到關(guān)聯(lián)12.1.3 使用傳播性狀態(tài)12.1.4 利用JPA的傳播性關(guān)聯(lián)12.2 大批量和批量操作12.2.1 使用HQL和JPA QL的大批量語句12.2.2 利用批量處理12.2.3 使用無狀態(tài)的會(huì)話12.3 數(shù)據(jù)過濾和攔截12.3.1 動(dòng)態(tài)數(shù)據(jù)過濾12.3.2 攔截Hibernate事件12.3.3 內(nèi)核事件系統(tǒng)12.3.4 實(shí)體監(jiān)聽器和回調(diào)12.4 小結(jié)第13章 優(yōu)化抓取和高速緩存13.1 定義全局抓取計(jì)劃13.1.1 對象獲取選項(xiàng)13.1.2 延遲的默認(rèn)抓取計(jì)劃13.1.3 理解代理13.1.4 禁用代理生成13.1.5 關(guān)聯(lián)和集合的即時(shí)加載13.1.6 通過攔截延遲加載13.2 選擇抓取策略13.2.1 批量預(yù)抓取數(shù)據(jù)13.2.2 通過子查詢預(yù)抓取集合13.2.3 通過聯(lián)結(jié)即時(shí)抓取13.2.4 給二級表優(yōu)化抓取13.2.5 優(yōu)化指導(dǎo)方針13.3 高速緩存基本原理13.3.1 高速緩存策略和范圍13.3.2 Hibernate高速緩存架構(gòu)13.4 高速緩存實(shí)踐13.4.1 選擇并發(fā)控制策略13.4.2 理解高速緩存區(qū)域13.4.3 設(shè)置本地的高速緩存提供程序13.4.4 設(shè)置重復(fù)的高速緩存13.4.5 控制二級高速緩存13.5 小結(jié)第14章 利用HQL和JPA QL查詢14.1 創(chuàng)建和運(yùn)行查詢14.1.1 準(zhǔn)備查詢14.1.2 執(zhí)行查詢14.1.3 使用具名查詢14.2 基本的HQL和JPA QL查詢14.2.1 選擇14.2.2 限制14.2.3 投影14.3 聯(lián)結(jié)、報(bào)表查詢和子查詢14.3.1 聯(lián)結(jié)關(guān)系和關(guān)聯(lián)14.3.2 報(bào)表查詢14.3.3 利用子查詢14.4 小結(jié)第15章 高級查詢選項(xiàng)15.1 利用條件和示例查詢15.1.1 基本的條件查詢15.1.2 聯(lián)結(jié)和動(dòng)態(tài)抓取15.1.3 投影和報(bào)表查詢15.1.4 按示例查詢15.2 利用原生的SQL查詢15.2.1 自動(dòng)的結(jié)果集處理15.2.2 獲取標(biāo)量值15.2.3 Java Persistence中的原生SQL15.3 過濾集合15.4 高速緩存查詢結(jié)果15.4.1 啟用查詢結(jié)果高速緩存15.4.2 理解查詢高速緩存15.4.3 什么時(shí)候使用查詢高速緩存15.4.4 自然標(biāo)識符高速緩存查找15.5 小結(jié)第16章 創(chuàng)建和測試分層的應(yīng)用程序16.1 Web應(yīng)用程序中的Hibernate16.1.1 用例簡介16.1.2 編寫控制器16.1.3 OSIV模式16.1.4 設(shè)計(jì)巧妙的領(lǐng)域模型16.2 創(chuàng)建持久層16.2.1 泛型的數(shù)據(jù)訪問對象模式16.2.2 實(shí)現(xiàn)泛型CRUD接口16.2.3 實(shí)現(xiàn)實(shí)體DAO16.2.4 利用數(shù)據(jù)訪問對象16.3 命令模式簡介16.3.1 基礎(chǔ)接口16.3.2 執(zhí)行命令對象16.3.3 命令模式的變形16.4 利用EJB 3.0設(shè)計(jì)應(yīng)用程序16.4.1 利用有狀態(tài)的bean實(shí)現(xiàn)會(huì)話16.4.2 利用EJB編寫DAO16.4.3 利用依賴注入16.5 測試16.5.1 理解不同種類的測試16.5.2 TestNG簡介16.5.3 測試持久層16.5.4 考慮性能基準(zhǔn)16.6 小結(jié)第17章 JBoss Seam簡介17.1 Java EE 5.0編程模型17.1.1 JSF詳解17.1.2 EJB 3.0詳解17.1.3 用JSF和EJB 3.0編寫Web應(yīng)用程序17.1.4 分析應(yīng)用程序17.2 用Seam改善應(yīng)用程序17.2.1 配置Seam17.2.2 將頁面綁定到有狀態(tài)的Seam組件17.2.3 分析Seam應(yīng)用程序17.3 理解上下文組件17.3.1 編寫登錄頁面17.3.2 創(chuàng)建組件17.3.3 給上下文變量起別名17.3.4 完成登錄/注銷特性17.4 驗(yàn)證用戶輸入17.4.1 Hibernate Validator簡介17.4.2 創(chuàng)建注冊頁面17.4.3 用Seam實(shí)現(xiàn)國際化17.5 利用Seam簡化持久化17.5.1 實(shí)現(xiàn)對話17.5.2 讓Seam管理持久化上下文17.6 小結(jié)附錄A SQL基礎(chǔ)知識附錄B 映射快速參考
媒體關(guān)注與評論
“Hibernate對Java Persistence乃至EJB 3.0的技術(shù)方向產(chǎn)生了巨大影響……本書必將成為廣大開發(fā)人員的知識寶庫?!薄 狶inda Demichiel,Sun公司EJB 3.0和Java Persistence標(biāo)準(zhǔn)負(fù)責(zé)人 “本書是終極解決方案。如果你是Hibernate開發(fā)人員,不要猶豫了,到書店去,買上一本!” ——JavaLobby
編輯推薦
Hibernate之父親自執(zhí)筆,無可替代的Hibernate和ORM技術(shù)圣經(jīng),職業(yè)Java程序員必備秘籍?! 〕志没乾F(xiàn)代企業(yè)級應(yīng)用的核心特性。作為Java世界最流行的持久化框架,Hibernate已經(jīng)成為開發(fā)Java EE應(yīng)用系統(tǒng)中不可替代的支柱之一。隨著EJB 3.0和Java Persistence標(biāo)準(zhǔn)的發(fā)布,Hibernate也迎來了更加成熟的新版本——Hibernate 3.2。新版本實(shí)現(xiàn)了Java Persistence標(biāo)準(zhǔn),既可以用于流行的開源技術(shù)組合(如Spring、Struts和Seam等)。也可以與其他EJB 3.0組件和Java EE服務(wù)集成?! ”緯俏阌怪靡傻腍ibernate和ORM(對象/關(guān)系映射)權(quán)威著作,由包括Hibernate之父在內(nèi)的兩位核心開發(fā)人員親自執(zhí)筆,詳細(xì)講述了Hibernate 3.2、Java Persistence和EJB 3.0標(biāo)準(zhǔn)?! ”緯ㄟ^一個(gè)應(yīng)用將數(shù)百個(gè)例子融合起來,不僅深入剖析了Hibernate 3.2和Java Persistence豐富的編程模型。還深刻闡述了數(shù)據(jù)庫設(shè)計(jì)、ORM和優(yōu)化等方面的基本原則、策略和最佳實(shí)踐。書中處處閃爍著作者超凡的真知灼見,將大大升華讀者對ORM乃至企業(yè)級應(yīng)用開發(fā)的理解。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載
Hibernate實(shí)戰(zhàn) PDF格式下載