《精通Hibernate:Java對象持久化技術詳解》是2010年電子工業出版社出版的圖書,作者是孫衛琴。
基本介紹
- 書名:精通Hibernate:Java對象持久化技術詳解
- 作者:孫衛琴
- ISBN: 9787121093739
- 定價:¥75.00
- 出版社:電子工業出版社
- 出版時間: 2010-2-1
- 開本:16開
內容簡介,面向讀者,作者簡介,目錄,
內容簡介
本書在第一版基礎上,理論內容更新,更加注重理論與實踐的結合,有大量具有典型性和實用價值的Hibernate套用實例。全書將詳細介紹運用目前最成熟的Hibernate 3.3版本進行Java對象持久化的技術,既能掌握用Hibernate工具對這兩種模型進行映射的技術,又能獲得設計與開發Java對象模型和關係數據模型的經驗。光碟包括本書範例源程式、涉及軟體的最新版本的安裝程式,以及配套的語音講座。
面向讀者
本書無論對於Java開發的新手還是行家來說,都是精通Java對象持久化技術的必備實用手冊。
作者簡介
孫衛琴:知名IT作家,Java系列暢銷書的作者。1997年畢業於上海交通大學,隨後從事基於Java的軟體開發工作,還從事Java方面的培訓和諮詢工作,2002年開始Java技術領域的創作,其作者深受讀者歡迎。 代表作有: 《精通Hibernate:Java對象持久化技術詳解(第2版)》2010-1-13 《Tomcat與Java Web開發技術詳解(第2版)》2009 《Java網路編程精解》2007 《Java面向對象編程》2006 《精通Hibernate:Java對象持久化技術詳解》2005 《精通Struts:基於MVC的Java Web設計與開發》2004 《Tomcat與Java Web開發技術詳解》2004 《Java 2認證考試指南與試題解析》2002
目錄
第1章 Java套用分層架構及軟體模型
1.1 應用程式的分層體系結構
1.1.1 區分物理層和邏輯層
1.1.2 軟體層的特徵
1.1.3 軟體分層的優點
1.1.4 軟體分層的缺點
1.1.5 Java套用的持久化層
1.2 軟體的模型
1.2.1 概念模型
1.2.2 關係數據模型
1.2.3 域模型
1.2.4 域對象
1.2.5 域對象之間的關係
1.2.6 域對象的持久化概念
1.3 小結
1.4 思考題
第2章 Java對象持久化技術概述
2.1 直接通過JDBC API來持久化實體域對象
2.2 ORM簡介
2.2.1 對象-關係映射的概念
2.2.2 ORM中間件的基本使用方法
2.2.3 常用的ORM中間件
2.3 實體域對象的其他持久化模式
2.3.1 主動域對象模式
2.3.2 JDO模式
2.3.3 CMP模式
2.4 Hibernate API簡介
2.4.1 Hibernate的核心接口
2.4.2 事件處理接口
2.4.3 Hibernate映射類型接口
2.4.4 可供擴展的接口
2.5 小結
2.6 思考題
第3章 第一個Hibernate套用
3.1 創建Hibernate的配置檔案
3.2 創建持久化類
3.3 創建資料庫Schema
3.4 創建對象-關係映射檔案
3.4.1 映射檔案的文檔類型定義(DTD)
3.4.2 把Customer持久化類映射到CUSTOMERS表
3.5 通過Hibernate API操縱資料庫
3.5.1 Hibernate的初始化
3.5.2 訪問Hibernate的Session接口
3.6 運行helloapp套用
3.6.1 創建運行本書範例的系統環境
3.6.2 創建helloapp套用的目錄結構
3.6.3 把helloapp套用作為獨立應用程式運行
3.6.4 把helloapp套用作為Java Web套用運行
3.7 小結
3.8 思考題
第4章 hbm2java和hbm2ddl工具
4.1 創建對象-關係映射檔案
4.1.1 定製持久化類
4.1.2 定製資料庫表
4.2 建立項目的目錄結構
4.3 運行hbm2java工具
4.4 運行hbm2ddl工具
4.5 使用XML格式的配置檔案
4.6 小結
4.7 思考題
第5章 對象-關係映射基礎
5.1 持久化類的屬性及訪問方法
5.1.1 基本類型屬性和包裝類型屬性
5.1.2 Hibernate訪問持久化類屬性的策略
5.1.3 在持久化類的訪問方法中加入程式邏輯
5.1.4 設定派生屬性
5.1.5 控制insert和update語句
5.2 處理SQL引用標識符
5.3 創建命名策略
5.4 設定資料庫Schema
5.5 設定類的包名
5.6 運行本章的範例程式
5.7 小結
5.8 思考題
第6章 映射對象標識符
6.1 關係資料庫按主鍵區分不同的記錄
6.1.1 把主鍵定義為自動增長標識符類型
6.1.2 從序列(Sequence)中獲取自動增長的標識符
6.2 Java語言按記憶體地址區分不同的對象
6.3 Hibernate用對象標識符(OID)來區分對象
6.4 Hibernate的內置標識符生成器的用法
6.4.1 increment標識符生成器
6.4.2 identity標識符生成器
6.4.3 sequence標識符生成器
6.4.4 hilo標識符生成器
6.4.5 native標識符生成器
6.5 映射自然主鍵
6.5.1 映射單個自然主鍵
6.5.2 映射複合自然主鍵
6.6 小結
6.7 思考題
第7章 映射一對多關聯關係
7.1 建立多對一的單向關聯關係
7.1.1 元素的not-null屬性
7.1.2 級聯保存和更新
7.2 映射一對多雙向關聯關係
7.2.1 元素的inverse屬性
7.2.2 級聯刪除
7.2.3 父子關係
7.3 映射一對多雙向自身關聯關係
7.4 改進持久化類
7.5 小結
7.6 思考題
第8章 通過Hibernate操縱對象(上)
8.1 Java對象在JVM中的生命周期
8.2 理解Session的快取
8.2.1 Session的快取的作用
8.2.2 髒檢查及清理快取的機制
8.3 Java對象在Hibernate持久化層的狀態
8.3.1 臨時對象的特徵
8.3.2 持久化對象的特徵
8.3.3 被刪除對象的特徵
8.3.4 游離對象的特徵
8.4 Session接口的詳細用法
8.4.1 Session的save()和persist()方法
8.4.2 Session的load()和get()方法
8.4.3 Session的update()方法
8.4.4 Session的saveOrUpdate()方法
8.4.5 Session的merge()方法
8.4.6 Session的delete()方法
8.4.7 Session的replicate()方法
8.5 級聯操縱對象圖
8.5.1 級聯保存臨時對象
8.5.2 更新持久化對象
8.5.3 持久化臨時對象
8.5.4 更新游離對象
8.5.5 遍歷對象圖
8.6 小結
8.7 思考題
第9章 通過Hibernate操縱對象(下)
9.1 與觸發器協同工作
9.2 利用攔截器(Interceptor)生成審計日誌
9.3 Hibernate的事件處理機制
9.4 批量處理數據
9.4.1 通過Session來進行批量操作
9.4.2 通過StatelessSession來進行批量操作
9.4.3 通過HQL來進行批量操作
9.4.4 直接通過JDBC API來進行批量操作
9.5 使用元數據
9.6 通過Hibernate調用存儲過程
9.7 小結
9.8 思考題
第10章 映射組成關係
10.1 建立精粒度對象模型
10.2 建立粗粒度關係數據模型
10.3 映射組成關係
10.3.1 區分值(Value)類型和實體(Entity)類型
10.3.2 在應用程式中訪問具有組成關係的持久化類
10.4 映射複合組成關係
10.5 小結
10.6 思考題
第11章 Hibernate的映射類型
11.1 Hibernate的內置映射類型
11.1.1 Java基本類型的Hibernate映射類型
11.1.2 Java時間和日期類型的Hibernate映射類型
11.1.3 Java大對象類型的Hibernate映射類型
11.1.4 JDK自帶的個別Java類的Hibernate映射類型
11.1.5 使用Hibernate內置映射類型
11.2 客戶化映射類型
11.2.1 用客戶化映射類型取代Hibernate組件
11.2.2 用UserType映射枚舉類型
11.2.3 實現CompositeUserType接口
11.2.4 運行本節範例程式
11.3 操縱Blob和Clob類型數據
11.4 小結
11.5 思考題
第12章 映射繼承關係
12.1 繼承關係樹的每個具體類對應一個表
12.1.1 創建映射檔案
12.1.2 操縱持久化對象
12.2 繼承關係樹的根類對應一個表
12.2.1 創建映射檔案
12.2.2 操縱持久化對象
12.3 繼承關係樹的每個類對應一個表
12.3.1 創建映射檔案
12.3.2 操縱持久化對象
12.4 選擇繼承關係的映射方式
12.5 映射多對一多態關聯
12.6 小結
12.7 思考題
第13章 Java集合類
13.1 Set(集)
13.1.1 Set的一般用法
13.1.2 HashSet類
13.1.3 TreeSet類
13.1.4 向Set中加入持久化類的對象
13.2 List(列表)
13.3 Map(映射)
13.4 小結
13.5 思考題
第14章 映射值類型集合
14.1 映射Set(集)
14.2 映射Bag(包)
14.3 映射List(列表)
14.4 映射Map
14.5 對集合排序
14.5.1 在資料庫中對集合排序
14.5.2 在記憶體中對集合排序
14.6 映射組件類型集合
14.7 小結
14.8 思考題
第15章 映射實體關聯關係
15.1 映射一對一關聯
15.1.1 按照外鍵映射
15.1.2 按照主鍵映射
15.2 映射單向多對多關聯
15.3 映射雙向多對多關聯關係
15.3.1 關聯兩端使用元素
15.3.2 在inverse端使用元素
15.3.3 使用組件類集合
15.3.4 把多對多關聯分解為兩個一對多關聯
15.4 小結
15.5 思考題
第16章 Hibernate的檢索策略
16.1 Hibernate的檢索策略簡介
16.2 類級別的檢索策略
16.2.1 立即檢索
16.2.2 延遲檢索
16.3 一對多和多對多關聯的檢索策略
16.3.1 立即檢索(lazy屬性為“false”)
16.3.2 延遲檢索(lazy屬性為默認值“true”)
16.3.3 增強延遲檢索(lazy屬性為“extra”)
16.3.4 批量延遲檢索和批量立即檢索(使用batch-size屬性)
16.3.5 用帶子查詢的select語句整批量初始化orders集合(fetch屬性為“subselect”)
16.3.6 迫切左外連線檢索(fetch屬性為“join”)
16.4 多對一和一對一關聯的檢索策略
16.4.1 迫切左外連線檢索(fetch屬性為“join”)
16.4.2 延遲檢索(lazy屬性為默認值“proxy”)
16.4.3 無代理延遲檢索(lazy屬性為“no-proxy”)
16.4.4 立即檢索(lazy屬性為“false”)
16.4.5 批量延遲檢索和批量立即檢索(使用batch-size屬性)
16.5 控制迫切左外連線檢索的深度
16.6 在應用程式中顯式指定迫切左外連線檢索策略
16.7 屬性級別的檢索策略
16.8 小結
16.9 思考題
第17章 Hibernate的檢索方式(上)
17.1 Hibernate的檢索方式簡介
17.1.1 HQL檢索方式
17.1.2 QBC檢索方式
17.1.3 本地SQL檢索方式
17.1.4 關於本章範例程式
17.1.5 使用別名
17.1.6 多態查詢
17.1.7 對查詢結果排序
17.1.8 分頁查詢
17.1.9 檢索單個對象(uniqueResult()方法)
17.1.10 按主鍵逐個處理查詢結果(iterate()方法)
17.1.11 可滾動的結果集
17.1.12 在HQL查詢語句中綁定參數
17.1.13 設定查詢附屬事項
17.1.14 在映射檔案中定義命名查詢語句
17.1.15 在HQL查詢語句中調用函式
17.2 設定查詢條件
17.2.1 比較運算
17.2.2 範圍運算
17.2.3 字元串模式匹配
17.2.4 邏輯運算
17.2.5 集合運算
17.3 小結
17.4 思考題
第18章 Hibernate的檢索方式(下)
18.1 連線查詢
18.1.1 默認情況下關聯級別的運行時檢索策略
18.1.2 迫切左外連線
18.1.3 左外連線
18.1.4 內連線
18.1.5 迫切內連線
18.1.6 隱式內連線
18.1.7 右外連線
18.1.8 使用SQL風格的交叉連線和隱式內連線
18.1.9 關聯級別運行時的檢索策略
18.2 投影查詢
18.3 報表查詢
18.3.1 使用聚集函式
18.3.2 分組查詢
18.3.3 最佳化報表查詢的性能
18.4 高級查詢技巧
18.4.1 動態查詢
18.4.2 集合過濾
18.4.3 子查詢
18.4.4 本地SQL查詢
18.4.5 查詢結果轉換器
18.5 查詢性能最佳化
18.5.1 iterate()方法
18.5.2 查詢快取
18.6 小結
18.7 思考題
第19章 Hibernate高級配置
19.1 配置資料庫連線池
19.1.1 使用默認的資料庫連線池
19.1.2 使用配置檔案指定的資料庫連線池
19.1.3 從容器中獲得數據源
19.1.4 由Java套用本身提供資料庫連線
19.2 配置事務類型
19.3 把SessionFactory與JNDI綁定
19.4 配置日誌
19.5 使用XML格式的配置檔案
19.6 小結
19.7 思考題
第20章 聲明資料庫事務
20.1 資料庫事務的概念
20.2 聲明事務邊界的方式
20.3 在mysql.exe程式中聲明事務
20.4 Java套用通過JDBC API聲明JDBC事務
20.5 Java套用通過Hibernate API聲明JDBC事務
20.5.1 處理異常
20.5.2 Session與事務的關係
20.5.3 設定事務逾時
20.6 Java套用通過Hibernate API聲明JTA事務
20.7 Java套用通過JTA API聲明JTA事務
20.8 小結
20.9 思考題
第21章 處理並發問題
21.1 多個事務並發運行時的並發問題
21.1.1 第一類丟失更新
21.1.2 髒讀
21.1.3 虛讀
21.1.4 不可重複讀
21.1.5 第二類丟失更新
21.2 資料庫系統的鎖的基本原理
21.2.1 鎖的多粒度性及自動鎖升級
21.2.2 鎖的類型和兼容性
21.2.3 死鎖及其防止辦法
21.3 資料庫的事務隔離級別
21.3.1 在mysql.exe程式中設定隔離級別
21.3.2 在應用程式中設定隔離級別
21.4 在應用程式中採用悲觀鎖
21.4.1 利用資料庫系統的獨占鎖來實現悲觀鎖
21.4.2 由應用程式實現悲觀鎖
21.5 利用Hibernate的版本控制來實現樂觀鎖
21.5.1 使用元素
21.5.2 使用元素
21.5.3 對游離對象進行版本檢查
21.5.4 強制更新版本
21.6 實現樂觀鎖的其他方法
21.7 小結
21.8 思考題
第22章 管理Hibernate的快取
22.1 快取的基本原理
22.1.1 持久化層的快取的範圍
22.1.2 持久化層的快取的並發訪問策略
22.2 Hibernate的二級快取結構
22.3 管理Hibernate的第一級快取
22.4 管理Hibernate的第二級快取
22.4.1 配置進程範圍內的第二級快取
22.4.2 配置集群範圍內的第二級快取
22.4.3 在應用程式中管理第二級快取
22.4.4 Session與第二級快取的互動模式
22.5 運行本章的範例程式
22.6 小結
22.7 思考題
第23章 管理Session和實現對話
23.1 管理Session對象的生命周期
23.1.1 Session對象的生命周期與本地執行緒綁定
23.1.2 Session對象的生命周期與JTA事務綁定
23.2 實現對話
23.2.1 使用游離對象
23.2.2 使用手工清理快取模式下的Session
23.3 小結
23.4 思考題
第24章 Hibernate與Struts框架
24.1 實現業務數據
24.2 實現業務邏輯
24.3 netstore套用的訂單業務
24.4 小結
第25章 Hibernate與EJB組件
25.1 創建EJB組件
25.1.1 編寫Remote接口
25.1.2 編寫Home接口
25.1.3 編寫Enterprise Java Bean類
25.2 在業務代理類中訪問EJB組件
25.3 發布J2EE套用
25.3.1 在JBoss上部署EJB組件
25.3.2 在JBoss上部署Web套用
25.3.3 在JBoss上部署J2EE套用
25.4 小結
附錄A 標準SQL語言的用法
A.1 數據完整性
A.1.1 實體完整性
A.1.2 域完整性
A.1.3 參照完整性
A.2 DDL數據定義語言
A.3 DML數據操縱語言
A.4 DQL數據查詢語言
A.4.1 簡單查詢
A.4.2 連線查詢
A.4.3 子查詢
A.4.4 聯合查詢
A.4.5 報表查詢
附錄B Java語言的反射機制
B.1 Java Reflection API簡介
B.2 運用反射機制來持久化Java對象
附錄C 用XDoclet工具生成映射檔案
C.1 創建帶有@hibernate標記的Java源檔案
C.2 建立項目的目錄結構
C.3 運行XDoclet工具
附錄D 發布和運行netstore套用
D.1 運行netstore所需的軟體
D.2 netstore套用的目錄結構
D.3 安裝SAMPLEDB資料庫
D.4 安裝和配置JBoss伺服器
D.5 發布netstore套用
D.5.1 在工作模式1下發布netstore套用
D.5.2 在工作模式2下發布netstore套用
D.6 運行netstore套用
附錄E Hibernate 3升級指南
E.1 Hibernate API 變化
E.1.1 包名
E.1.2 org.hibernate.classic包
E.1.3 Hibernate所依賴的第三方軟體包
E.1.4 異常模型
E.1.5 Session接口
E.1.6 createSQLQuery()
E.1.7 Lifecycle 和 Validatable 接口
E.1.8 Interceptor接口
E.1.9 UserType和CompositeUserType接口
E.1.10 FetchMode類
E.1.11 PersistentEnum類
E.1.12 對Blob 和Clob的支持
E.1.13 Hibernate中供擴展的API的變化
E.2 元數據的變化
E.2.1 檢索策略
E.2.2 對象標識符的映射
E.2.3 集合映射
E.2.4 DTD
E.3 查詢語句的變化
E.4 把Hibernate 2套用升級到Hibernate 3套用
附錄F 思考題答案
參考文獻