Hibernate實戰第2版

Hibernate實戰第2版

《Hibernate實戰第2版》是2016年清華大學出版社出版的圖書。

基本介紹

  • 中文名:Hibernate實戰第2版
  • 作者:[德]Christian Bauer,[澳]Gavin King,[美]Gary Gregory
  • 譯者:蒲成
  • 出版社:清華大學出版社
  • 出版時間:2016年9月1日
  • 頁數:532 頁
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787302448082
內容簡介,作者簡介,圖書目錄,

內容簡介

 持久化——數據在程式實例之外留存的功能——是現代應用程式的核心。Hibernate是流行的Java持久化工具,提供了自動且透明的對象/關係映射,使得在Java應用程式中使用SQL資料庫變得輕而易舉。
  《Hibernate實戰(第2版)》通過開發一個將數百個單獨示例聯繫起來的應用程式來探究Hibernate。你將直接深入到Hibernate的富編程模型之中,貫穿映射、查詢、抓取策略、事務、會話、快取以及更多其他內容。書中圖文並茂地介紹了資料庫設計和最佳化技術的實踐。在本書中,作者詳盡介紹了具有Java持久化2.1標準的Hibernate 5(JSR 338)。所有的示例都已經被更新,以便用於新的Hibernate和Java EE規範版本。
  主要內容
  ◆ 對象/關係映射概念
  ◆ 有效的資料庫應用程式設計
  ◆ 全面的Hibernate與Java持久化介紹
  ◆ Java持久化與EJB、CDI、JSF和JAX-RS的集成
  ◆ 無與倫比的廣度和深度
  本書假設讀者具有Java的使用經驗。

作者簡介

  Christian Bauer,是Hibernate開發者團隊的一員,他是一位培訓師和顧問。Gavin King是Hibernate項目的發起者以及最初的Java持久化專家組(JSR 220)的一員。他還主導了CDI的
  標準化工作(JSR 299)。Gavin目前正在創建名為Ceylon的新程式語言。Gary Gregory是Rocket Software的首席軟體工程師,他致力於應用程式伺服器和遺留系統的集成。他是Manning出版社JUnit in Action和Spring Batch in Action這兩本書的合著者,並且是Apache軟體基金會項目:Commons、HttpComponents、Logging Services和Xalan的項目管理委員會的一員。

圖書目錄

第Ⅰ部分 ORM入門
第1章 理解對象/關係持久化 1
1.1 持久化的定義 4
1.1.1 關係型資料庫 4
1.1.2 理解SQL 5
1.1.3 在Java中使用SQL 5
1.2 範式不匹配 7
1.2.1 粒度問題 8
1.2.2 子類型問題 10
1.2.3 標識問題 11
1.2.4 與關聯相關的問題 12
1.2.5 數據導航的問題 13
1.3 ORM和JPA 14
1.4 本章小結 15
第2章 開啟一個項目 17
2.1 Hibernate介紹 17
2.2 使用JPA的“Hello World” 18
2.2.1 配置一個持久化單元 18
2.2.2 編寫一個持久化類 20
2.2.3 存儲和載入訊息 21
2.3 原生Hibernate配置 23
2.4 本章小結 26
第3章 域模型和元數據 27
3.1 CaveatEmptor示例應用程式 28
3.1.1 一個分層架構 28
3.1.2 分析業務域 29
3.1.3 CaveatEmptor域模型 30
3.2 實現域模型 31
3.2.1 處理關注點滲漏 31
3.2.2 透明及自動持久化 32
3.2.3 編寫可持久化類 33
3.2.4 實現POJO關聯 36
3.3 域模型元數據 39
3.3.1 基於註解的元數據 40
3.3.2 套用Bean驗證規則 42
3.3.3 使用XML檔案外部化元數據 45
3.3.4 在運行時訪問元數據 48
3.4 本章小結 51
第Ⅱ部分 映射策略
第4章 映射持久化類 55
4.1 理解實體和值類型 55
4.1.1 細粒度域模型 55
4.1.2 定義應用程式概念 56
4.1.3 區分實體和值類型 57
4.2 映射具有標識的實體 58
4.2.1 理解Java標識和相等性 58
4.2.2 第一個實體類和映射 59
4.2.3 選擇一個主鍵 60
4.2.4 配置鍵生成器 61
4.2.5 標識符生成器策略 63
4.3 實體映射選項 66
4.3.1 控制名稱 66
4.3.2 動態SQL生成 69
4.3.3 讓實體不可變 69
4.3.4 將一個實體映射到子查詢 70
4.4 本章小結 71
第5章 映射值類型 73
5.1 映射基本屬性 73
5.1.1 重寫基本屬性的默認設定 74
5.1.2 自定義屬性訪問 75
5.1.3 使用派生屬性 77
5.1.4 轉換列值 77
5.1.5 生成的以及默認的屬性值 78
5.1.6 時序屬性 79
5.1.7 映射枚舉 80
5.2 映射可嵌入組件 80
5.2.1 資料庫架構 81
5.2.2 讓類可嵌入 81
5.2.3 重寫嵌入屬性 84
5.2.4 映射嵌套的可嵌入組件 85
5.3 使用轉換器映射Java和SQL類型 87
5.3.1 內置類型 87
5.3.2 創建自定義JPA轉換器 92
5.3.3 使用UserTypes擴展Hibernate 98
5.4 本章小結 104
第6章 映射繼承關係 105
6.1 每個帶有隱式多態的具體類使用一個表 105
6.2 每個帶有聯合的具體類使用一個表 107
6.3 每個類層次結構使用一個表 109
6.4 每個帶有聯結的子類使用一個表 112
6.5 混合繼承策略 115
6.6 可嵌入類的繼承 117
6.7 選擇一種策略 119
6.8 多態關聯 120
6.8.1 多態多對一關聯 121
6.8.2 多態集合 123
6.9 本章小結 124
第7章 映射集合和實體關聯 125
7.1 集、包、列表及值類型映射 125
7.1.1 資料庫架構 126
7.1.2 創建和映射一個集合屬性 126
7.1.3 選擇集合接口 127
7.1.4 映射集 128
7.1.5 映射標識符包 129
7.1.6 映射列表 130
7.1.7 映射一個映射 132
7.1.8 排列和排序集合 132
7.2 組件集合 135
7.2.1 組件實例的相等性 136
7.2.2 組件集 138
7.2.3 組件包 139
7.2.4 組件值的映射 141
7.2.5 作為映射鍵的組件 142
7.2.6 可嵌入組件中的集合 143
7.3 映射實體關聯 144
7.3.1 最簡單的可能關聯 145
7.3.2 讓其變成雙向的 146
7.3.3 級聯狀態 147
7.4 本章小結 153
第8章 高級實體關聯映射 155
8.1 一對一關聯 155
8.1.1 共享主鍵 156
8.1.2 外主鍵生成器 158
8.1.3 使用一個外鍵聯結列 161
8.1.4 使用一個聯結表 162
8.2 一對多關聯 164
8.2.1 考慮一對多包 164
8.2.2 單向和雙向列表映射 166
8.2.3 具有聯結表的可選一對多 168
8.2.4 可嵌入類中的一對多關聯 169
8.3 多對多和三元關聯 171
8.3.1 單向和雙向多對多關聯 172
8.3.2 具有中間實體的多對多關聯 173
8.3.3 具有組件的三元關聯 177
8.4 具有映射的實體關聯 180
8.4.1 具有屬性鍵的一對多關聯 180
8.4.2 鍵/值三元關係 181
8.5 本章小結 182
第9章 複雜和遺留模式 185
9.1 改進資料庫架構 186
9.1.1 添加輔助資料庫對象 186
9.1.2 SQL約束 189
9.1.3 創建索引 194
9.2 處理遺留鍵 195
9.2.1 映射一個自然主鍵 195
9.2.2 映射一個組合主鍵 196
9.2.3 組合主鍵中的外鍵 198
9.2.4 引用組合主鍵的外鍵 201
9.2.5 引用非主鍵的外鍵 202
9.3 將屬性映射到輔助表 203
9.4 本章小結 204
第Ⅲ部分 事務性數據處理
第10章 管理數據 207
10.1 持久化生命周期 207
10.1.1 實體實例狀態 208
10.1.2 持久化上下文 209
10.2 EntityManager接口 211
10.2.1 規範的工作單元 211
10.2.2 使數據持久化 212
10.2.3 檢索和修改持久化數據 213
10.2.4 得到一個引用 215
10.2.5 讓數據變成瞬時的 216
10.2.6 刷新數據 217
10.2.7 複製數據 217
10.2.8 在持久化上下文中快取 218
10.2.9 刷新持久化上下文 220
10.3 處理分離的狀態 221
10.3.1 分離實例的標識 221
10.3.2 實現相等性方法 223
10.3.3 分離實體實例 225
10.3.4 合併實體實例 226
10.4 本章小結 227
第11章 事務和並發 229
11.1 事務的要素 229
11.1.1 ACID屬性 230
11.1.2 資料庫和系統事務 230
11.1.3 使用JTA的編程式事務 230
11.1.4 處理異常 232
11.1.5 聲明式事務分界 234
11.2 控制並發訪問 234
11.2.1 理解資料庫級別的並發 235
11.2.2 樂觀並發控制 239
11.2.3 顯式悲觀鎖 245
11.2.4 避免死鎖 248
11.3 非事務性數據訪問 249
11.3.1 在自動提交模式中讀取數據 250
11.3.2 對修改進行排隊 251
11.4 本章小結 253
第12章 抓取計畫、策略和配置檔案 255
12.1 延遲載入和急載入 256
12.1.1 理解實體代理 256
12.1.2 延遲持久化集合 260
12.1.3 使用攔截進行延遲載入 262
12.1.4 關聯和集合的急載入 264
12.2 選擇一個抓取策略 266
12.2.1 n+1查詢問題 266
12.2.2 笛卡爾積問題 267
12.2.3 批量預抓取數據 270
12.2.4 使用子查詢預抓取集合 272
12.2.5 使用多個SELECT進行急抓取 273
12.2.6 動態急抓取 274
12.3 使用抓取配置檔案 275
12.3.1 聲明Hibernate抓取配置檔案 276
12.3.2 使用實體圖 277
12.4 本章小結 281
第13章 數據過濾 283
13.1 級聯狀態遷移 284
13.1.1 可用的級聯選項 284
13.1.2 傳遞式分離與合併 285
13.1.3 級聯刷新 287
13.1.4 級聯複製 289
13.1.5 啟用全局傳遞式持久化 290
13.2 偵聽和攔截事件 290
13.2.1 JPA事件偵聽器和回調 291
13.2.2 實現Hibernate攔截器 294
13.2.3 核心事件系統 298
13.3 使用Hibernate Envers進行
審計和版本控制 299
13.3.1 啟用審計日誌 300
13.3.2 創建審計追蹤 301
13.3.3 找出版本 301
13.3.4 訪問歷史數據 303
13.4 動態數據過濾器 305
13.4.1 定義動態過濾器 306
13.4.2 套用過濾器 306
13.4.3 啟用過濾器 307
13.4.4 過濾集合訪問 308
13.5 本章小結 309
第IV部分 編寫查詢
第14章 創建和執行查詢 313
14.1 創建查詢 314
14.1.1 JPA查詢接口 314
14.1.2 類型化查詢結果 316
14.1.3 Hibernate的查詢接口 316
14.2 準備查詢 318
14.2.1 防止SQL注入攻擊 318
14.2.2 綁定命名參數 318
14.2.3 使用定位參數 320
14.2.4 對大結果集分頁 320
14.3 執行查詢 322
14.3.1 列示所有結果 322
14.3.2 得到單個結果 322
14.3.3 滾動資料庫游標 323
14.3.4 遍歷一個結果 325
14.4 命名和外部化查詢 326
14.4.1 調用一個命名查詢 326
14.4.2 在XML元數據中定義查詢 326
14.4.3 使用註解定義查詢 327
14.4.4 編程式定義命名查詢 328
14.5 查詢提示 329
14.5.1 設定一個逾時時長 330
14.5.2 設定刷新模式 330
14.5.3 設定唯讀模式 331
14.5.4 設定一個抓取大小 331
14.5.5 設定一個SQL注釋 331
14.5.6 命名的查詢提示 332
14.6 本章小結 333
第15章 查詢語言 335
15.1 選擇 336
15.1.1 指定別名和查詢根 336
15.1.2 多態查詢 337
15.2 限制 338
15.2.1 比較表達式 339
15.2.2 使用集合的表達式 344

相關詞條

熱門詞條

聯絡我們