第一部分 從Hibernate和EJB 3.0開始
第1章 理解對象/關係持久化
1.1 什麼是持久化
1.1.1 關係數據庫
1.1.2 理解SQL
1.1.3 在Java中使用SQL
1.1.4 麵嚮對象應用程序中的持久化
1.2 範式不匹配
1.2.1 粒度問題
1.2.2 子類型問題
1.2.3 同一性問題
1.2.4 與關聯相關的問題
1.2.5 數據導航的問題
1.2.6 不匹配的代價
1.3 持久層和其他層
1.3.1 分層架構
1.3.2 用SQL/JDBC手工編寫持久層
1.3.3 使用序列化
1.3.4 麵嚮對象的數據庫係統
1.3.5 其他選項
1.4 ORM
1.4.1 什麼是ORM
1.4.2 一般的ORM問題
1.4.3 為什麼選擇ORM
1.4.4 Hibernate、EJB 3和JPA簡介
1.5 小結
第2章 啓動項目
2.1 啓動Hibernate項目
2.1.1 選擇開發過程
2.1.2 建立項目
2.1.3 Hibernate配置和啓動
2.1.4 運行和測試應用程序
2.2 啓動Java Persistence項目
2.2.1 使用Hibernate Annotations
2.2.2 使用Hibernate EntityManager
2.2.3 引入EJB組件
2.2.4 切換到Hibernate接口
2.3 反嚮工程遺留數據庫
2.3.1 創建數據庫配置
2.3.2 定製反嚮工程
2.3.3 生成Java源代碼
2.4 與Java EE服務整閤
2.4.1 與JTA整閤
2.4.2 JNDI綁定的SessionFactory
2.4.3 JMX服務部署
2.5 小結
第3章 領域模型和元數據
3.1 CaveatEmptor應用程序
3.1.1 分析業務領域
3.1.2 CaveatEmptor領域模型
3.2 實現領域模型
3.2.1 處理關注點滲漏
3.2.2 透明和自動持久化
3.2.3 編寫POJO和持久化實體類
3.2.4 實現POJO關聯
3.2.5 把邏輯添加到訪問方法
3.3 ORM元數據
3.3.1 XML中的元數據
3.3.2 基於注解的元數據
3.3.3 使用XDoclet
3.3.4 處理全局的元數據
3.3.5 運行時操作元數據
3.4 其他實體錶示法
3.4.1 創建動態的應用程序
3.4.2 錶示XML中的數據
3.5 小結
第二部分 映射概念和策略
第4章 映射持久化類
4.1 理解實體和值類型
4.1.1 細粒度的領域模型
4.1.2 定義概念
4.1.3 識彆實體和值類型
4.2 映射帶有同一性的實體
4.2.1 理解Java同一性和等同性
4.2.2 處理數據庫同一性
4.2.3 數據庫主鍵
4.3 類映射選項
4.3.1 動態的SQL生成
4.3.2 使實體不可變
4.3.3 給查詢命名實體
4.3.4 聲明包名稱
4.3.5 用引號把SQL標識符括起來
4.3.6 實現命名約定
4.4 細粒度的模型和映射
4.4.1 映射基礎屬性
4.4.2 映射組件
4.5 小結
第5章 繼承和定製類型
5.1 映射類繼承
5.1.1 每個帶有隱式多態的具體類一張錶
5.1.2 每個帶有聯閤的具體類一張錶
5.1.3 每個類層次結構一張錶
5.1.4 每個子類一張錶
5.1.5 混閤繼承策略
5.1.6 選擇策略
5.2 Hibernate類型係統
5.2.1 概述實體和值類型
5.2.2 內建的映射類型
5.2.3 使用映射類型
5.3 創建定製的映射類型
5.3.1 考慮定製的映射類型
5.3.2 擴展點
5.3.3 定製映射類型的案例
5.3.4 創建UserType
5.3.5 創建CompositeUserType
5.3.6 參數化定製類型
5.3.7 映射枚舉
5.4 小結
第6章 映射集閤和實體關聯
6.1 值類型的set、bag、list和map
6.1.1 選擇集閤接口
6.1.2 映射set
6.1.3 映射標識符bag
6.1.4 映射list
6.1.5 映射map
6.1.6 排序集閤和有序集閤
6.2 組件的集閤
6.2.1 編寫組件類
6.2.2 映射集閤
6.2.3 啓用雙嚮導航
6.2.4 避免非空列
6.3 用注解映射集閤
6.3.1 基本的集閤映射
6.3.2 排序集閤和有序集閤
6.3.3 映射嵌入式對象的集閤
6.4 映射父/子關係
6.4.1 多樣性
6.4.2 最簡單的可能關聯
6.4.3 使關聯雙嚮
6.4.4 級聯對象狀態
6.5 小結
第7章 高級實體關聯映射
7.1 單值的實體關聯
7.1.1 共享的主鍵關聯
7.1.2 一對一的外鍵關聯
7.1.3 用聯結錶映射
7.2 多值的實體關聯
7.2.1 一對多關聯
7.2.2 多對多關聯
7.2.3 把列添加到聯結錶
7.2.4 映射map
7.3 多態關聯
7.3.1 多態的多對一關聯
7.3.2 多態集閤
7.3.3 對聯閤的多態關聯
7.3.4 每個具體類一張多態錶
7.4 小結
第8章 遺留數據庫和定製SQL
8.1 整閤遺留數據庫
8.1.1 處理主鍵
8.1.2 帶有公式的任意聯結條件
8.1.3 聯結任意的錶
8.1.4 使用觸發器
8.2 定製SQL
8.2.1 編寫定製CRUD語句
8.2.2 整閤存儲過程和函數
8.3 改進Schema DDL
8.3.1 定製SQL名稱和數據類型
8.3.2 確保數據一緻性
8.3.3 添加領域約束和列約束
8.3.4 錶級約束
8.3.5 數據庫約束
8.3.6 創建索引
8.3.7 添加輔助的DDL
8.4 小結
第三部分 會話對象處理
第9章 使用對象
9.1 持久化生命周期
9.1.1 對象狀態
9.1.2 持久化上下文
9.2 對象同一性和等同性
9.2.1 引入對話
9.2.2 對象同一性的範圍
9.2.3 脫管對象的同一性
9.2.4 擴展持久化上下文
9.3 Hibernate接口
9.3.1 保存和加載對象
9.3.2 使用脫管對象
9.3.3 管理持久化上下文
9.4 JPA
9.4.1 保存和加載對象
9.4.2 使用脫管的實體實例
9.5 在EJB組件中使用Java Persistence
9.5.1 注入EntityManager
9.5.2 查找EntityManager
9.5.3 訪問EntityManagerFactory
9.6 小結
第10章 事務和並發
10.1 事務本質
10.1.1 數據庫和係統事務
10.1.2 Hibernate應用程序中的事務
10.1.3 使用Java Persistence的事務
10.2 控製並發訪問
10.2.1 理解數據庫級並發
10.2.2 樂觀並發控製
10.2.3 獲得額外的隔離性保證
10.3 非事務數據訪問
10.3.1 揭開自動提交的神秘麵紗
10.3.2 使用Hibernate非事務地工作
10.3.3 使用JTA的可選事務
10.4 小結
第11章 實現對話
11.1 傳播Hibernate Session
11.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 給對話擴展Session
11.3 使用JPA的對話
11.3.1 Java SE中的持久化上下文傳播
11.3.2 在對話中閤並脫管對象
11.3.3 在Java SE中擴展持久化上下文
11.4 使用EJB 3.0的對話
11.4.1 使用EJB的上下文傳播
11.4.2 利用EJB擴展持久化上下文
11.5 小結
第12章 有效修改對象
12.1 傳播性持久化
12.1.1 按可到達性持久化
12.1.2 把級聯應用到關聯
12.1.3 使用傳播性狀態
12.1.4 利用JPA的傳播性關聯
12.2 大批量和批量操作
12.2.1 使用HQL和JPA QL的大批量語句
12.2.2 利用批量處理
12.2.3 使用無狀態的會話
12.3 數據過濾和攔截
12.3.1 動態數據過濾
12.3.2 攔截Hibernate事件
12.3.3 內核事件係統
12.3.4 實體監聽器和迴調
12.4 小結
第13章 優化抓取和高速緩存
13.1 定義全局抓取計劃
13.1.1 對象獲取選項
13.1.2 延遲的默認抓取計劃
13.1.3 理解代理
13.1.4 禁用代理生成
13.1.5 關聯和集閤的即時加載
13.1.6 通過攔截延遲加載
13.2 選擇抓取策略
13.2.1 批量預抓取數據
13.2.2 通過子查詢預抓取集閤
13.2.3 通過聯結即時抓取
13.2.4 給二級錶優化抓取
13.2.5 優化指導方針
13.3 高速緩存基本原理
13.3.1 高速緩存策略和範圍
13.3.2 Hibernate高速緩存架構
13.4 高速緩存實踐
13.4.1 選擇並發控製策略
13.4.2 理解高速緩存區域
13.4.3 設置本地的高速緩存提供程序
13.4.4 設置重復的高速緩存
13.4.5 控製二級高速緩存
13.5 小結
第14章 利用HQL和JPA QL查詢
14.1 創建和運行查詢
14.1.1 準備查詢
14.1.2 執行查詢
14.1.3 使用具名查詢
14.2 基本的HQL和JPA QL查詢
14.2.1 選擇
14.2.2 限製
14.2.3 投影
14.3 聯結、報錶查詢和子查詢
14.3.1 聯結關係和關聯
14.3.2 報錶查詢
14.3.3 利用子查詢
14.4 小結
第15章 高級查詢選項
15.1 利用條件和示例查詢
15.1.1 基本的條件查詢
15.1.2 聯結和動態抓取
15.1.3 投影和報錶查詢
15.1.4 按示例查詢
15.2 利用原生的SQL查詢
15.2.1 自動的結果集處理
15.2.2 獲取標量值
15.2.3 Java Persistence中的原生SQL
15.3 過濾集閤
15.4 高速緩存查詢結果
15.4.1 啓用查詢結果高速緩存
15.4.2 理解查詢高速緩存
15.4.3 什麼時候使用查詢高速緩存
15.4.4 自然標識符高速緩存查找
15.5 小結
第16章 創建和測試分層的應用程序
16.1 Web應用程序中的Hibernate
16.1.1 用例簡介
16.1.2 編寫控製器
16.1.3 OSIV模式
16.1.4 設計巧妙的領域模型
16.2 創建持久層
16.2.1 泛型的數據訪問對象模式
16.2.2 實現泛型CRUD接口
16.2.3 實現實體DAO
16.2.4 利用數據訪問對象
16.3 命令模式簡介
16.3.1 基礎接口
16.3.2 執行命令對象
16.3.3 命令模式的變形
16.4 利用EJB 3.0設計應用程序
16.4.1 利用有狀態的bean實現會話
16.4.2 利用EJB編寫DAO
16.4.3 利用依賴注入
16.5 測試
16.5.1 理解不同種類的測試
16.5.2 TestNG簡介
16.5.3 測試持久層
16.5.4 考慮性能基準
16.6 小結
第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應用程序
17.1.4 分析應用程序
17.2 用Seam改善應用程序
17.2.1 配置Seam
17.2.2 將頁麵綁定到有狀態的Seam組件
17.2.3 分析Seam應用程序
17.3 理解上下文組件
17.3.1 編寫登錄頁麵
17.3.2 創建組件
17.3.3 給上下文變量起彆名
17.3.4 完成登錄/注銷特性
17.4 驗證用戶輸入
17.4.1 Hibernate Validator簡介
17.4.2 創建注冊頁麵
17.4.3 用Seam實現國際化
17.5 利用Seam簡化持久化
17.5.1 實現對話
17.5.2 讓Seam管理持久化上下文
17.6 小結
附錄A SQL基礎知識
附錄B 映射快速參考
· · · · · · (
收起)