Hibernate實戰(第2版)

Hibernate實戰(第2版)

《Hibernate實戰(第2版)》是2008年4月人民郵電出版社出版的圖書,作者是[德]Christian Bauer、[澳]Gavin King。

基本介紹

  • 中文名:Hibernate實戰(第2版)
  • 作者:[德]Christian Bauer、[澳]Gavin King
  • ISBN:9787115174482
  • 頁數:608頁
  • 定價:99元
  • 出版社:人民郵電出版社
  • 出版時間:2008年4月
  • 裝幀:平裝
  • 開本:16開
內容簡介,圖書目錄,

內容簡介

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

圖書目錄

第 一部分 從Hibernate和EJB 3.0開始
第 1章 理解對象/關係持久化 2
1.1 什麼是持久化 3
1.1.1 關係資料庫 3
1.1.2 理解SQL 4
1.1.3 在Java中使用SQL 5
1.1.4 面向對象應用程式中的持久化 5
1.2 範式不匹配 6
1.2.1 粒度問題 8
1.2.2 子類型問題 9
1.2.3 同一性問題 10
1.2.4 與關聯相關的問題 11
1.2.5 數據導航的問題 12
1.2.6 不匹配的代價 13
1.3 持久層和其他層 14
1.3.1 分層架構 14
1.3.2 用SQL/JDBC手工編寫持久層 15
1.3.3 使用序列化 16
1.3.4 面向對象的資料庫系統 16
1.3.5 其他選項 17
1.4 ORM 17
1.4.1 什麼是ORM 17
1.4.2 一般的ORM問題 19
1.4.3 為什麼選擇ORM 19
1.4.4 Hibernate、EJB 3和JPA簡介 21
1.5 小結 24
第 2章 啟動項目 25
2.1 啟動Hibernate項目 25
2.1.1 選擇開發過程 26
2.1.2 建立項目 28
2.1.3 Hibernate配置和啟動 34
2.1.4 運行和測試應用程式 42
2.2 啟動Java Persistence項目 48
2.2.1 使用Hibernate Annotations 48
2.2.2 使用Hibernate EntityManager 51
2.2.3 引入EJB組件 57
2.2.4 切換到Hibernate接口 62
2.3 反向工程遺留資料庫 64
2.3.1 創建資料庫配置 64
2.3.2 定製反向工程 65
2.3.3 生成Java原始碼 67
2.4 與Java EE服務整合 69
2.4.1 與JTA整合 70
2.4.2 JNDI綁定的SessionFactory 73
2.4.3 JMX服務部署 75
2.5 小結 75
第3章 領域模型和元數據 77
3.1 CaveatEmptor應用程式 77
3.1.1 分析業務領域 78
3.1.2 CaveatEmptor領域模型 78
3.2 實現領域模型 80
3.2.1 處理關注點滲漏 81
3.2.2 透明和自動持久化 81
3.2.3 編寫POJO和持久化實體類 82
3.2.4 實現POJO關聯 84
3.2.5 把邏輯添加到訪問方法 88
3.3 ORM元數據 89
3.3.1 XML中的元數據 89
3.3.2 基於註解的元數據 91
3.3.3 使用XDoclet 95
3.3.4 處理全局的元數據 97
3.3.5 運行時操作元數據 101
3.4 其他實體表示法 102
3.4.1 創建動態的應用程式 103
3.4.2 表示XML中的數據 108
3.5 小結 112
第 二部分 映射概念和策略
第4章 映射持久化類 114
4.1 理解實體和值類型 114
4.1.1 細粒度的領域模型 114
4.1.2 定義概念 115
4.1.3 識別實體和值類型 115
4.2 映射帶有同一性的實體 117
4.2.1 理解Java同一性和等同性 117
4.2.2 處理資料庫同一性 117
4.2.3 資料庫主鍵 120
4.3 類映射選項 123
4.3.1 動態的SQL生成 123
4.3.2 使實體不可變 124
4.3.3 給查詢命名實體 125
4.3.4 聲明包名稱 125
4.3.5 用引號把SQL標識符括起來 126
4.3.6 實現命名約定 126
4.4 細粒度的模型和映射 127
4.4.1 映射基礎屬性 128
4.4.2 映射組件 133
4.5 小結 137
第5章 繼承和定製類型 139
5.1 映射類繼承 139
5.1.1 每個帶有隱式多態的具體類一張表 140
5.1.2 每個帶有聯合的具體類一張表 142
5.1.3 每個類層次結構一張表 145
5.1.4 每個子類一張表 148
5.1.5 混合繼承策略 151
5.1.6 選擇策略 154
5.2 Hibernate類型系統 155
5.2.1 概述實體和值類型 155
5.2.2 內建的映射類型 156
5.2.3 使用映射類型 160
5.3 創建定製的映射類型 161
5.3.1 考慮定製的映射類型 161
5.3.2 擴展點 162
5.3.3 定製映射類型的案例 163
5.3.4 創建UserType 164
5.3.5 創建CompositeUserType 166
5.3.6 參數化定製類型 169
5.3.7 映射枚舉 171
5.4 小結 175
第6章 映射集合和實體關聯 177
6.1 值類型的set、bag、list和map 177
6.1.1 選擇集合接口 178
6.1.2 映射set 179
6.1.3 映射標識符bag 180
6.1.4 映射list 181
6.1.5 映射map 182
6.1.6 排序集合和有序集合 183
6.2 組件的集合 185
6.2.1 編寫組件類 185
6.2.2 映射集合 186
6.2.3 啟用雙嚮導航 186
6.2.4 避免非空列 187
6.3 用註解映射集合 189
6.3.1 基本的集合映射 189
6.3.2 排序集合和有序集合 190
6.3.3 映射嵌入式對象的集合 191
6.4 映射父/子關係 192
6.4.1 多樣性 193
6.4.2 **簡單的可能關聯 193
6.4.3 使關聯雙向 195
6.4.4 級聯對象狀態 197
6.5 小結 203
第7章 高級實體關聯映射 204
7.1 單值的實體關聯 204
7.1.1 共享的主鍵關聯 205
7.1.2 一對一的外鍵關聯 208
7.1.3 用聯結表映射 210
7.2 多值的實體關聯 213
7.2.1 一對多關聯 214
7.2.2 多對多關聯 219
7.2.3 把列添加到聯結表 223
7.2.4 映射map 229
7.3 多態關聯 231
7.3.1 多態的多對一關聯 232
7.3.2 多態集合 233
7.3.3 對聯合的多態關聯 234
7.3.4 每個具體類一張多態表 236
7.4 小結 238
第8章 遺留資料庫和定製SQL 239
8.1 整合遺留資料庫 239
8.1.1 處理主鍵 240
8.1.2 帶有公式的任意聯結條件 250
8.1.3 聯結任意的表 254
8.1.4 使用觸發器 257
8.2 定製SQL 260
8.2.1 編寫定製CRUD語句 261
8.2.2 整合存儲過程和函式 265
8.3 改進Schema DDL 271
8.3.1 定製SQL名稱和數據類型 271
8.3.2 確保數據一致性 273
8.3.3 添加領域約束和列約束 274
8.3.4 表級約束 276
8.3.5 資料庫約束 278
8.3.6 創建索引 279
8.3.7 添加輔助的DDL 280
8.4 小結 282
第三部分 會話對象處理
第9章 使用對象 284
9.1 持久化生命周期 284
9.1.1 對象狀態 285
9.1.2 持久化上下文 287
9.2 對象同一性和等同性 289
9.2.1 引入對話 289
9.2.2 對象同一性的範圍 290
9.2.3 脫管對象的同一性 292
9.2.4 擴展持久化上下文 296
9.3 Hibernate接口 296
9.3.1 保存和載入對象 297
9.3.2 使用脫管對象 302
9.3.3 管理持久化上下文 306
9.4 JPA 308
9.4.1 保存和載入對象 309
9.4.2 使用脫管的實體實例 312
9.5 在EJB組件中使用Java Persistence 315
9.5.1 注入EntityManager 315
9.5.2 查找EntityManager 317
9.5.3 訪問EntityManagerFactory 318
9.6 小結 319
第 10章 事務和並發 320
10.1 事務本質 320
10.1.1 資料庫和系統事務 321
10.1.2 Hibernate應用程式中的事務 323
10.1.3 使用Java Persistence的事務 331
10.2 控制並發訪問 334
10.2.1 理解資料庫級並發 334
10.2.2 樂觀並發控制 338
10.2.3 獲得額外的隔離性保證 343
10.3 非事務數據訪問 346
10.3.1 揭開自動提交的神秘面紗 346
10.3.2 使用Hibernate非事務地工作 347
10.3.3 使用JTA的可選事務 349
10.4 小結 349
第 11章 實現對話 351
11.1 傳播Hibernate Session 351
11.1.1 Session傳播的用例 352
11.1.2 通過執行緒局部傳播 353
11.1.3 利用JTA傳播 355
11.1.4 利用EJB傳播 356
11.2 利用Hibernate的對話 357
11.2.1 提供對話保證 357
11.2.2 利用脫管對象的對話 358
11.2.3 給對話擴展Session 360
11.3 使用JPA的對話 366
11.3.1 Java SE中的持久化上下文傳播 367
11.3.2 在對話中合併脫管對象 368
11.3.3 在Java SE中擴展持久化上下文 369
11.4 使用EJB 3.0的對話 373
11.4.1 使用EJB的上下文傳播 373
11.4.2 利用EJB擴展持久化上下文 376
11.5 小結 380
第 12章 有效修改對象 381
12.1 傳播性持久化 381
12.1.1 按可到達性持久化 382
12.1.2 把級聯套用到關聯 383
12.1.3 使用傳播性狀態 386
12.1.4 利用JPA的傳播性關聯 391
12.2 大批量和批量操作 392
12.2.1 使用HQL和JPA QL的大批量語句 392
12.2.2 利用批量處理 395
12.2.3 使用無狀態的會話 397
12.3 數據過濾和攔截 398
12.3.1 動態數據過濾 399
12.3.2 攔截Hibernate事件 402
12.3.3 核心事件系統 408
12.3.4 實體監聽器和回調 410
12.4 小結 411
第 13章 最佳化抓取和高速快取 412
13.1 定義全局抓取計畫 412
13.1.1 對象獲取選項 412
13.1.2 延遲的默認抓取計畫 415
13.1.3 理解代理 415
13.1.4 禁用代理生成 417
13.1.5 關聯和集合的即時載入 418
13.1.6 通過攔截延遲載入 420
13.2 選擇抓取策略 422
13.2.1 批量預抓取數據 422
13.2.2 通過子查詢預抓取集合 424
13.2.3 通過聯結即時抓取 425
13.2.4 給二級表最佳化抓取 428
13.2.5 最佳化指導方針 430
13.3 高速快取基本原理 436
13.3.1 高速快取策略和範圍 436
13.3.2 Hibernate高速快取架構 439
13.4 高速快取實踐 442
13.4.1 選擇並發控制策略 442
13.4.2 理解高速快取區域 444
13.4.3 設定本地的高速快取提供程式 445
13.4.4 設定重複的高速快取 446
13.4.5 控制二級高速快取 449
13.5 小結 451
第 14章 利用HQL和JPA QL查詢 452
14.1 創建和運行查詢 452
14.1.1 準備查詢 453
14.1.2 執行查詢 460
14.1.3 使用具名查詢 463
14.2 基本的HQL和JPA QL查詢 465
14.2.1 選擇 466
14.2.2 限制 467
14.2.3 投影 472
14.3 聯結、報表查詢和子查詢 473
14.3.1 聯結關係和關聯 473
14.3.2 報表查詢 482
14.3.3 利用子查詢 485
14.4 小結 487
第 15章 高級查詢選項 488
15.1 利用條件和示例查詢 488
15.1.1 基本的條件查詢 489
15.1.2 聯結和動態抓取 493
15.1.3 投影和報表查詢 497
15.1.4 按示例查詢 500
15.2 利用原生的SQL查詢 503
15.2.1 自動的結果集處理 503
15.2.2 獲取標量值 504
15.2.3 Java Persistence中的原生SQL 505
15.3 過濾集合 507
15.4 高速快取查詢結果 508
15.4.1 啟用查詢結果高速快取 509
15.4.2 理解查詢高速快取 509
15.4.3 什麼時候使用查詢高速快取 510
15.4.4 自然標識符高速快取查找 511
15.5 小結 512
第 16章 創建和測試分層的應用程式 513
16.1 Web應用程式中的Hibernate 513
16.1.1 用例簡介 514
16.1.2 編寫控制器 514
16.1.3 OSIV模式 516
16.1.4 設計巧妙的領域模型 518
16.2 創建持久層 521
16.2.1 泛型的數據訪問對象模式 521
16.2.2 實現泛型CRUD接口 523
16.2.3 實現實體DAO 525
16.2.4 利用數據訪問對象 526
16.3 命令模式簡介 529
16.3.1 基礎接口 530
16.3.2 執行命令對象 531
16.3.3 命令模式的變形 533
16.4 利用EJB 3.0設計應用程式 534
16.4.1 利用有狀態的bean實現會話 534
16.4.2 利用EJB編寫DAO 536
16.4.3 利用依賴注入 537
16.5 測試 538
16.5.1 理解不同種類的測試 539
16.5.2 TestNG簡介 539
16.5.3 測試持久層 542
16.5.4 考慮性能基準 549
16.6 小結 550
第 17章 JBoss Seam簡介 551
17.1 Java EE 5.0編程模型 551
17.1.1 JSF詳解 552
17.1.2 EJB 3.0詳解 553
17.1.3 用JSF和EJB 3.0編寫Web應用程式 554
17.1.4 分析應用程式 562
17.2 用Seam改善應用程式 564
17.2.1 配置Seam 565
17.2.2 將頁面綁定到有狀態的Seam組件 566
17.2.3 分析Seam應用程式 570
17.3 理解上下文組件 575
17.3.1 編寫登錄頁面 575
17.3.2 創建組件 577
17.3.3 給上下文變數起別名 579
17.3.4 完成登錄/註銷特性 580
17.4 驗證用戶輸入 583
17.4.1 Hibernate Validator簡介 584
17.4.2 創建註冊頁面 584
17.4.3 用Seam實現國際化 591
17.5 利用Seam簡化持久化 594
17.5.1 實現對話 595
17.5.2 讓Seam管理持久化上下文 601
17.6 小結 604
附錄A SQL基礎知識 606
附錄B 映射快速參考 609

相關詞條

熱門詞條

聯絡我們