
掃描右側圖片或微信搜索 “ Java技術分享屋 ” ,回復 “ 驗證碼 ” ,獲取驗證密碼。
本資料僅供讀者預覽及學習交流使用,不能用于商業(yè)用途,請在下載后24小時內刪除。如果喜歡,請購買正版!
一.資料圖片
二.資料簡介
《精通Hibernate:Java對象持久化技術詳解(第2版)》在第一版基礎上,理論內容更新,更加注重理論與實踐的結合,有大量具有典型性和實用價值的Hibernate應用實例。全書將詳細介紹運用目前最成熟的Hibernate 3.3版本進行Java對象持久化的技術,既能掌握用Hibernate工具對這兩種模型進行映射的技術,又能獲得設計與開發(fā)Java對象模型和關系數(shù)據(jù)模型的經驗。光盤包括《精通Hibernate:Java對象持久化技術詳解(第2版)》范例源程序、涉及軟件的最新版本的安裝程序,以及配套的語音講座。
《精通Hibernate:Java對象持久化技術詳解(第2版)》無論對于Java開發(fā)的新手還是行家來說,都是精通Java對象持久化技術的必備實用手冊。
三.資料目錄
目錄第1章 Java應用分層架構及軟件模型 1
1.1 應用程序的分層體系結構 1
1.1.1 區(qū)分物理層和邏輯層 2
1.1.2 軟件層的特征 3
1.1.3 軟件分層的優(yōu)點 4
1.1.4 軟件分層的缺點 4
1.1.5 Java應用的持久化層 5
1.2 軟件的模型 6
1.2.1 概念模型 7
1.2.2 關系數(shù)據(jù)模型 8
1.2.3 域模型 10
1.2.4 域對象 10
1.2.5 域對象之間的關系 11
1.2.6 域對象的持久化概念 17
1.3 小結 19
1.4 思考題 19
第2章 Java對象持久化技術概述 21
2.1 直接通過JDBC API來持久化實體域對象 21
2.2 ORM簡介 27
2.2.1 對象-關系映射的概念 29
2.2.2 ORM中間件的基本使用方法 31
2.2.3 常用的ORM中間件 33
2.3 實體域對象的其他持久化模式 34
2.3.1 主動域對象模式 35
2.3.2 JDO模式 37
2.3.3 CMP模式 37
2.4 Hibernate API簡介 38
2.4.1 Hibernate的核心接口 39
2.4.2 事件處理接口 41
2.4.3 Hibernate映射類型接口 41
2.4.4 可供擴展的接口 42
2.5 小結 43
2.6 思考題 45
第3章 第一個Hibernate應用 47
3.1 創(chuàng)建Hibernate的配置文件 47
3.2 創(chuàng)建持久化類 48
3.3 創(chuàng)建數(shù)據(jù)庫Schema 51
3.4 創(chuàng)建對象-關系映射文件 52
3.4.1 映射文件的文檔類型定義(DTD) 52
3.4.2 把Customer持久化類映射到CUSTOMERS表 54
3.5 通過Hibernate API操縱數(shù)據(jù)庫 58
3.5.1 Hibernate的初始化 61
3.5.2 訪問Hibernate的Session接口 63
3.6 運行helloapp應用 67
3.6.1 創(chuàng)建運行本書范例的系統(tǒng)環(huán)境 67
3.6.2 創(chuàng)建helloapp應用的目錄結構 72
3.6.3 把helloapp應用作為獨立應用程序運行 73
3.6.4 把helloapp應用作為Java Web應用運行 77
3.7 小結 78
3.8 思考題 80
第4章 hbm2java和hbm2ddl工具 83
4.1 創(chuàng)建對象-關系映射文件 83
4.1.1 定制持久化類 85
4.1.2 定制數(shù)據(jù)庫表 88
4.2 建立項目的目錄結構 90
4.3 運行hbm2java工具 93
4.4 運行hbm2ddl工具 94
4.5 使用XML格式的配置文件 96
4.6 小結 97
4.7 思考題 98
第5章 對象-關系映射基礎 101
5.1 持久化類的屬性及訪問方法 101
5.1.1 基本類型屬性和包裝類型屬性 102
5.1.2 Hibernate訪問持久化類屬性的策略 104
5.1.3 在持久化類的訪問方法中加入程序邏輯 104
5.1.4 設置派生屬性 107
5.1.5 控制insert和update語句 108
5.2 處理SQL引用標識符 109
5.3 創(chuàng)建命名策略 110
5.4 設置數(shù)據(jù)庫Schema 112
5.5 設置類的包名 113
5.6 運行本章的范例程序 114
5.7 小結 120
5.8 思考題 121
第6章 映射對象標識符 123
6.1 關系數(shù)據(jù)庫按主鍵區(qū)分不同的記錄 123
6.1.1 把主鍵定義為自動增長標識符類型 123
6.1.2 從序列(Sequence)中獲取自動增長的標識符 124
6.2 Java語言按內存地址區(qū)分不同的對象 125
6.3 Hibernate用對象標識符(OID)來區(qū)分對象 126
6.4 Hibernate的內置標識符生成器的用法 128
6.4.1 increment標識符生成器 131
6.4.2 identity標識符生成器 133
6.4.3 sequence標識符生成器 134
6.4.4 hilo標識符生成器 135
6.4.5 native標識符生成器 137
6.5 映射自然主鍵 138
6.5.1 映射單個自然主鍵 138
6.5.2 映射復合自然主鍵 140
6.6 小結 143
6.7 思考題 144
第7章 映射一對多關聯(lián)關系 147
7.1 建立多對一的單向關聯(lián)關系 148
7.1.1 <many-to-one>元素的not-null屬性 153
7.1.2 級聯(lián)保存和更新 155
7.2 映射一對多雙向關聯(lián)關系 156
7.2.1 <set>元素的inverse屬性 161
7.2.2 級聯(lián)刪除 163
7.2.3 父子關系 164
7.3 映射一對多雙向自身關聯(lián)關系 165
7.4 改進持久化類 171
7.5 小結 175
7.6 思考題 176
第8章 通過Hibernate操縱對象(上) 179
8.1 Java對象在JVM中的生命周期 179
8.2 理解Session的緩存 181
8.2.1 Session的緩存的作用 182
8.2.2 臟檢查及清理緩存的機制 184
8.3 Java對象在Hibernate持久化層的狀態(tài) 187
8.3.1 臨時對象的特征 188
8.3.2 持久化對象的特征 189
8.3.3 被刪除對象的特征 190
8.3.4 游離對象的特征 191
8.4 Session接口的詳細用法 191
8.4.1 Session的save()和persist()方法 191
8.4.2 Session的load()和get()方法 194
8.4.3 Session的update()方法 195
8.4.4 Session的saveOrUpdate()方法 197
8.4.5 Session的merge()方法 198
8.4.6 Session的delete()方法 200
8.4.7 Session的replicate()方法 201
8.5 級聯(lián)操縱對象圖 202
8.5.1 級聯(lián)保存臨時對象 206
8.5.2 更新持久化對象 207
8.5.3 持久化臨時對象 207
8.5.4 更新游離對象 209
8.5.5 遍歷對象圖 210
8.6 小結 211
8.7 思考題 211
第9章 通過Hibernate操縱對象(下) 215
9.1 與觸發(fā)器協(xié)同工作 215
9.2 利用攔截器(Interceptor)生成審計日志 217
9.3 Hibernate的事件處理機制 224
9.4 批量處理數(shù)據(jù) 226
9.4.1 通過Session來進行批量操作 227
9.4.2 通過StatelessSession來進行批量操作 229
9.4.3 通過HQL來進行批量操作 230
9.4.4 直接通過JDBC API來進行批量操作 232
9.5 使用元數(shù)據(jù) 233
9.6 通過Hibernate調用存儲過程 234
9.7 小結 234
9.8 思考題 235
第10章 映射組成關系 237
10.1 建立精粒度對象模型 238
10.2 建立粗粒度關系數(shù)據(jù)模型 239
10.3 映射組成關系 240
10.3.1 區(qū)分值(Value)類型和實體(Entity)類型 242
10.3.2 在應用程序中訪問具有組成關系的持久化類 244
10.4 映射復合組成關系 247
10.5 小結 248
10.6 思考題 249
第11章 Hibernate的映射類型 251
11.1 Hibernate的內置映射類型 251
11.1.1 Java基本類型的Hibernate映射類型 251
11.1.2 Java時間和日期類型的Hibernate映射類型 252
11.1.3 Java大對象類型的Hibernate映射類型 253
11.1.4 JDK自帶的個別Java類的Hibernate映射類型 253
11.1.5 使用Hibernate內置映射類型 254
11.2 客戶化映射類型 256
11.2.1 用客戶化映射類型取代Hibernate組件 260
11.2.2 用UserType映射枚舉類型 263
11.2.3 實現(xiàn)CompositeUserType接口 266
11.2.4 運行本節(jié)范例程序 271
11.3 操縱Blob和Clob類型數(shù)據(jù) 279
11.4 小結 284
11.5 思考題 284
第12章 映射繼承關系 287
12.1 繼承關系樹的每個具體類對應一個表 288
12.1.1 創(chuàng)建映射文件 289
12.1.2 操縱持久化對象 290
12.2 繼承關系樹的根類對應一個表 293
12.2.1 創(chuàng)建映射文件 294
12.2.2 操縱持久化對象 296
12.3 繼承關系樹的每個類對應一個表 297
12.3.1 創(chuàng)建映射文件 298
12.3.2 操縱持久化對象 300
12.4 選擇繼承關系的映射方式 302
12.5 映射多對一多態(tài)關聯(lián) 305
12.6 小結 308
12.7 思考題 309
第13章 Java集合類 311
13.1 Set(集) 312
13.1.1 Set的一般用法 312
13.1.2 HashSet類 313
13.1.3 TreeSet類 315
13.1.4 向Set中加入持久化類的對象 319
13.2 List(列表) 320
13.3 Map(映射) 321
13.4 小結 325
13.5 思考題 326
第14章 映射值類型集合 327
14.1 映射Set(集) 327
14.2 映射Bag(包) 331
14.3 映射List(列表) 334
14.4 映射Map 337
14.5 對集合排序 339
14.5.1 在數(shù)據(jù)庫中對集合排序 340
14.5.2 在內存中對集合排序 341
14.6 映射組件類型集合 345
14.7 小結 350
14.8 思考題 351
第15章 映射實體關聯(lián)關系 353
15.1 映射一對一關聯(lián) 353
15.1.1 按照外鍵映射 354
15.1.2 按照主鍵映射 358
15.2 映射單向多對多關聯(lián) 361
15.3 映射雙向多對多關聯(lián)關系 365
15.3.1 關聯(lián)兩端使用<set>元素 366
15.3.2 在inverse端使用<bag>元素 367
15.3.3 使用組件類集合 371
15.3.4 把多對多關聯(lián)分解為兩個一對多關聯(lián) 376
15.4 小結 378
15.5 思考題 379
第16章 Hibernate的檢索策略 381
16.1 Hibernate的檢索策略簡介 383
16.2 類級別的檢索策略 386
16.2.1 立即檢索 387
16.2.2 延遲檢索 387
16.3 一對多和多對多關聯(lián)的檢索策略 390
16.3.1 立即檢索(lazy屬性為“false”) 392
16.3.2 延遲檢索(lazy屬性為默認值“true”) 392
16.3.3 增強延遲檢索(lazy屬性為“extra”) 393
16.3.4 批量延遲檢索和批量立即檢索(使用batch-size屬性) 393
16.3.5 用帶子查詢的select語句整批量初始化orders集合(fetch屬性為“subselect”) 396
16.3.6 迫切左外連接檢索(fetch屬性為“join”) 397
16.4 多對一和一對一關聯(lián)的檢索策略 398
16.4.1 迫切左外連接檢索(fetch屬性為“join”) 398
16.4.2 延遲檢索(lazy屬性為默認值“proxy”) 400
16.4.3 無代理延遲檢索(lazy屬性為“no-proxy”) 401
16.4.4 立即檢索(lazy屬性為“false”) 401
16.4.5 批量延遲檢索和批量立即檢索(使用batch-size屬性) 402
16.5 控制迫切左外連接檢索的深度 405
16.6 在應用程序中顯式指定迫切左外連接檢索策略 408
16.7 屬性級別的檢索策略 408
16.8 小結 409
16.9 思考題 411
第17章 Hibernate的檢索方式(上) 413
17.1 Hibernate的檢索方式簡介 413
17.1.1 HQL檢索方式 416
17.1.2 QBC檢索方式 417
17.1.3 本地SQL檢索方式 419
17.1.4 關于本章范例程序 420
17.1.5 使用別名 421
17.1.6 多態(tài)查詢 421
17.1.7 對查詢結果排序 422
17.1.8 分頁查詢 423
17.1.9 檢索單個對象(uniqueResult()方法) 424
17.1.10 按主鍵逐個處理查詢結果(iterate()方法) 425
17.1.11 可滾動的結果集 426
17.1.12 在HQL查詢語句中綁定參數(shù) 428
17.1.13 設置查詢附屬事項 433
17.1.14 在映射文件中定義命名查詢語句 436
17.1.15 在HQL查詢語句中調用函數(shù) 438
17.2 設定查詢條件 439
17.2.1 比較運算 440
17.2.2 范圍運算 441
17.2.3 字符串模式匹配 442
17.2.4 邏輯運算 443
17.2.5 集合運算 444
17.3 小結 445
17.4 思考題 446
第18章 Hibernate的檢索方式(下) 449
18.1 連接查詢 449
18.1.1 默認情況下關聯(lián)級別的運行時檢索策略 450
18.1.2 迫切左外連接 451
18.1.3 左外連接 453
18.1.4 內連接 457
18.1.5 迫切內連接 461
18.1.6 隱式內連接 463
18.1.7 右外連接 464
18.1.8 使用SQL風格的交叉連接和隱式內連接 466
18.1.9 關聯(lián)級別運行時的檢索策略 467
18.2 投影查詢 468
18.3 報表查詢 471
18.3.1 使用聚集函數(shù) 471
18.3.2 分組查詢 472
18.3.3 優(yōu)化報表查詢的性能 475
18.4 高級查詢技巧 475
18.4.1 動態(tài)查詢 476
18.4.2 集合過濾 478
18.4.3 子查詢 480
18.4.4 本地SQL查詢 482
18.4.5 查詢結果轉換器 484
18.5 查詢性能優(yōu)化 486
18.5.1 iterate()方法 486
18.5.2 查詢緩存 487
18.6 小結 488
18.7 思考題 489
第19章 Hibernate高級配置 491
19.1 配置數(shù)據(jù)庫連接池 491
19.1.1 使用默認的數(shù)據(jù)庫連接池 494
19.1.2 使用配置文件指定的數(shù)據(jù)庫連接池 495
19.1.3 從容器中獲得數(shù)據(jù)源 495
19.1.4 由Java應用本身提供數(shù)據(jù)庫連接 497
19.2 配置事務類型 497
19.3 把SessionFactory與JNDI綁定 500
19.4 配置日志 502
19.5 使用XML格式的配置文件 505
19.6 小結 507
19.7 思考題 508
第20章 聲明數(shù)據(jù)庫事務 511
20.1 數(shù)據(jù)庫事務的概念 511
20.2 聲明事務邊界的方式 513
20.3 在mysql.exe程序中聲明事務 515
20.4 Java應用通過JDBC API聲明JDBC事務 517
20.5 Java應用通過Hibernate API聲明JDBC事務 518
20.5.1 處理異常 520
20.5.2 Session與事務的關系 522
20.5.3 設定事務超時 525
20.6 Java應用通過Hibernate API聲明JTA事務 525
20.7 Java應用通過JTA API聲明JTA事務 526
20.8 小結 529
20.9 思考題 530
第21章 處理并發(fā)問題 533
21.1 多個事務并發(fā)運行時的并發(fā)問題 533
21.1.1 第一類丟失更新 534
21.1.2 臟讀 535
21.1.3 虛讀 535
21.1.4 不可重復讀 536
21.1.5 第二類丟失更新 536
21.2 數(shù)據(jù)庫系統(tǒng)的鎖的基本原理 537
21.2.1 鎖的多粒度性及自動鎖升級 538
21.2.2 鎖的類型和兼容性 538
21.2.3 死鎖及其防止辦法 540
21.3 數(shù)據(jù)庫的事務隔離級別 541
21.3.1 在mysql.exe程序中設置隔離級別 543
21.3.2 在應用程序中設置隔離級別 543
21.4 在應用程序中采用悲觀鎖 544
21.4.1 利用數(shù)據(jù)庫系統(tǒng)的獨占鎖來實現(xiàn)悲觀鎖 544
21.4.2 由應用程序實現(xiàn)悲觀鎖 550
21.5 利用Hibernate的版本控制來實現(xiàn)樂觀鎖 550
21.5.1 使用<version>元素 551
21.5.2 使用<timestamp>元素 556
21.5.3 對游離對象進行版本檢查 558
21.5.4 強制更新版本 559
21.6 實現(xiàn)樂觀鎖的其他方法 559
21.7 小結 560
21.8 思考題 561
第22章 管理Hibernate的緩存 563
22.1 緩存的基本原理 563
22.1.1 持久化層的緩存的范圍 564
22.1.2 持久化層的緩存的并發(fā)訪問策略 566
22.2 Hibernate的二級緩存結構 568
22.3 管理Hibernate的第一級緩存 569
22.4 管理Hibernate的第二級緩存 570
22.4.1 配置進程范圍內的第二級緩存 571
22.4.2 配置集群范圍內的第二級緩存 575
22.4.3 在應用程序中管理第二級緩存 578
22.4.4 Session與第二級緩存的交互模式 578
22.5 運行本章的范例程序 579
22.6 小結 583
22.7 思考題 584
第23章 管理Session和實現(xiàn)對話 587
23.1 管理Session對象的生命周期 587
23.1.1 Session對象的生命周期與本地線程綁定 590
23.1.2 Session對象的生命周期與JTA事務綁定 592
23.2 實現(xiàn)對話 593
23.2.1 使用游離對象 595
23.2.2 使用手工清理緩存模式下的Session 597
23.3 小結 603
23.4 思考題 605
第24章 Hibernate與Struts框架 607
24.1 實現(xiàn)業(yè)務數(shù)據(jù) 609
24.2 實現(xiàn)業(yè)務邏輯 612
24.3 netstore應用的訂單業(yè)務 622
24.4 小結 626
第25章 Hibernate與EJB組件 629
25.1 創(chuàng)建EJB組件 629
25.1.1 編寫Remote接口 629
25.1.2 編寫Home接口 631
25.1.3 編寫Enterprise Java Bean類 631
25.2 在業(yè)務代理類中訪問EJB組件 633
25.3 發(fā)布J2EE應用 638
25.3.1 在JBoss上部署EJB組件 638
25.3.2 在JBoss上部署Web應用 639
25.3.3 在JBoss上部署J2EE應用 640
25.4 小結 642
附錄A 標準SQL語言的用法 643
A.1 數(shù)據(jù)完整性 644
A.1.1 實體完整性 644
A.1.2 域完整性 644
A.1.3 參照完整性 644
A.2 DDL數(shù)據(jù)定義語言 644
A.3 DML數(shù)據(jù)操縱語言 646
A.4 DQL數(shù)據(jù)查詢語言 647
A.4.1 簡單查詢 648
A.4.2 連接查詢 648
A.4.3 子查詢 651
A.4.4 聯(lián)合查詢 652
A.4.5 報表查詢 652
附錄B Java語言的反射機制 655
B.1 Java Reflection API簡介 655
B.2 運用反射機制來持久化Java對象 658
附錄C 用XDoclet工具生成映射文件 665
C.1 創(chuàng)建帶有@hibernate標記的Java源文件 665
C.2 建立項目的目錄結構 669
C.3 運行XDoclet工具 672
附錄D 發(fā)布和運行netstore應用 675
D.1 運行netstore所需的軟件 675
D.2 netstore應用的目錄結構 676
D.3 安裝SAMPLEDB數(shù)據(jù)庫 677
D.4 安裝和配置JBoss服務器 677
D.5 發(fā)布netstore應用 679
D.5.1 在工作模式1下發(fā)布netstore應用 679
D.5.2 在工作模式2下發(fā)布netstore應用 679
D.6 運行netstore應用 680
附錄E Hibernate 3升級指南 685
E.1 Hibernate API 變化 685
E.1.1 包名 685
E.1.2 org.hibernate.classic包 685
E.1.3 Hibernate所依賴的第三方軟件包 686
E.1.4 異常模型 686
E.1.5 Session接口 686
E.1.6 createSQLQuery() 687
E.1.7 Lifecycle 和 Validatable 接口 687
E.1.8 Interceptor接口 687
E.1.9 UserType和CompositeUserType接口 687
E.1.10 FetchMode類 688
E.1.11 PersistentEnum類 688
E.1.12 對Blob 和Clob的支持 688
E.1.13 Hibernate中供擴展的API的變化 688
E.2 元數(shù)據(jù)的變化 688
E.2.1 檢索策略 688
E.2.2 對象標識符的映射 688
E.2.3 集合映射 689
E.2.4 DTD 689
E.3 查詢語句的變化 689
E.4 把Hibernate 2應用升級到Hibernate 3應用 690
附錄F 思考題答案 691
參考文獻 693