圖書信息
精通Hibernate:Java對象持久化技術詳解作者:孫衛瑟編著
出版社:電子工業出版社
出版時間:2010-2-1
字數:1148800
開本:16開
ISBN:9787121093739
定價:¥75.00
內容簡介
本書在第一版基礎上,理論內容更新,更加注重理論與實踐的結合,有大量具有典型性和實用價值的Hibernate套用實例。全書將詳細介紹運用目前最成熟的Hibernate3.3版本進行Java對象持久化的技術,既能掌握用Hibernate工具對這兩種模型進行映射的技術,又能獲得設計與開發Java對象模型和關係數據模型的經驗。光碟包括本書範例源程式、涉及軟體的最新版本的安裝程式,以及配套的語音講座。本書無論對於Java開發的新手還是行家來說,都是精通Java對象持久化技術的必備實用手冊。
作者簡介
孫衛琴:知名IT作家的,Java系列暢銷書的作者。1997年畢業於上海交通大學,隨後從事基於Java的軟體開發工作,還從事Java方面的培訓和諮詢工作,2002年開始Java技術領域的創作,其作者深受讀者歡迎。代表作有:《精通Hibernate:Java對象持久化技術詳解(第2版)》2010-1-13《Tomcat與JavaWeb開發技術詳解(第2版)》2009《Java網路編程精解》2007《Java面向對象編程》2006《精通Hibernate:Java對象持久化技術詳解》2005《精通Struts:基於MVC的JavaWeb設計與開發》2004《Tomcat與JavaWeb開發技術詳解》2004《Java2認證考試指南與試題解析》2002目錄
第1章Java套用分層架構及軟體模型1.1應用程式的分層體系結構
1.1.1區分物理層和邏輯層
1.1.2軟體層的特徵
1.1.3軟體分層的優點
1.1.4軟體分層的缺點
1.1.5Java套用的持久化層
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直接通過JDBCAPI來持久化實體域對象
2.2ORM簡介
2.2.1對象-關係映射的概念
2.2.2ORM中間件的基本使用方法
2.2.3常用的ORM中間件
2.3實體域對象的其他持久化模式
2.3.1主動域對象模式
2.3.2JDO模式
2.3.3CMP模式
2.4HibernateAPI簡介
2.4.1Hibernate的核心接口
2.4.2事件處理接口
2.4.3Hibernate映射類型接口
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通過HibernateAPI操縱資料庫
3.5.1Hibernate的初始化
3.5.2訪問Hibernate的Session接口
3.6運行helloapp套用
3.6.1創建運行本書範例的系統環境
3.6.2創建helloapp套用的目錄結構
3.6.3把helloapp套用作為獨立應用程式運行
3.6.4把helloapp套用作為JavaWeb套用運行
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.2Hibernate訪問持久化類屬性的策略
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.2Java語言按記憶體地址區分不同的對象
6.3Hibernate用對象標識符(OID)來區分對象
6.4Hibernate的內置標識符生成器的用法
6.4.1increment標識符生成器
6.4.2identity標識符生成器
6.4.3sequence標識符生成器
6.4.4hilo標識符生成器
6.4.5native標識符生成器
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.1Java對象在JVM中的生命周期
8.2理解Session的快取
8.2.1Session的快取的作用
8.2.2髒檢查及清理快取的機制
8.3Java對象在Hibernate持久化層的狀態
8.3.1臨時對象的特徵
8.3.2持久化對象的特徵
8.3.3被刪除對象的特徵
8.3.4游離對象的特徵
8.4Session接口的詳細用法
8.4.1Session的save()和persist()方法
8.4.2Session的load()和get()方法
8.4.3Session的update()方法
8.4.4Session的saveOrUpdate()方法
8.4.5Session的merge()方法
8.4.6Session的delete()方法
8.4.7Session的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.3Hibernate的事件處理機制
9.4批量處理數據
9.4.1通過Session來進行批量操作
9.4.2通過StatelessSession來進行批量操作
9.4.3通過HQL來進行批量操作
9.4.4直接通過JDBCAPI來進行批量操作
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.1Hibernate的內置映射類型
11.1.1Java基本類型的Hibernate映射類型
11.1.2Java時間和日期類型的Hibernate映射類型
11.1.3Java大對象類型的Hibernate映射類型
11.1.4JDK自帶的個別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.1Set(集)
13.1.1Set的一般用法
13.1.2HashSet類
13.1.3TreeSet類
13.1.4向Set中加入持久化類的對象
13.2List(列表)
13.3Map(映射)
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.1Hibernate的檢索策略簡介
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.1Hibernate的檢索方式簡介
17.1.1HQL檢索方式
17.1.2QBC檢索方式
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.1iterate()方法
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.4Java套用通過JDBCAPI聲明JDBC事務
20.5Java套用通過HibernateAPI聲明JDBC事務
20.5.1處理異常
20.5.2Session與事務的關係
20.5.3設定事務逾時
20.6Java套用通過HibernateAPI聲明JTA事務
20.7Java套用通過JTAAPI聲明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.2Hibernate的二級快取結構
22.3管理Hibernate的第一級快取
22.4管理Hibernate的第二級快取
22.4.1配置進程範圍內的第二級快取
22.4.2配置集群範圍內的第二級快取
22.4.3在應用程式中管理第二級快取
22.4.4Session與第二級快取的互動模式
22.5運行本章的範例程式
22.6小結
22.7思考題
第23章管理Session和實現對話
23.1管理Session對象的生命周期
23.1.1Session對象的生命周期與本地執行緒綁定
23.1.2Session對象的生命周期與JTA事務綁定
23.2實現對話
23.2.1使用游離對象
23.2.2使用手工清理快取模式下的Session
23.3小結
23.4思考題
第24章Hibernate與Struts框架
24.1實現業務數據
24.2實現業務邏輯
24.3netstore套用的訂單業務
24.4小結
第25章Hibernate與EJB組件
25.1創建EJB組件
25.1.1編寫Remote接口
25.1.2編寫Home接口
25.1.3編寫EnterpriseJavaBean類
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.2DDL數據定義語言
A.3DML數據操縱語言
A.4DQL數據查詢語言
A.4.1簡單查詢
A.4.2連線查詢
A.4.3子查詢
A.4.4聯合查詢
A.4.5報表查詢
附錄BJava語言的反射機制
B.1JavaReflectionAPI簡介
B.2運用反射機制來持久化Java對象
附錄C用XDoclet工具生成映射檔案
C.1創建帶有@hibernate標記的Java源檔案
C.2建立項目的目錄結構
C.3運行XDoclet工具
附錄D發布和運行netstore套用
D.1運行netstore所需的軟體
D.2netstore套用的目錄結構
D.3安裝SAMPLEDB資料庫
D.4安裝和配置JBoss伺服器
D.5發布netstore套用
D.5.1在工作模式1下發布netstore套用
D.5.2在工作模式2下發布netstore套用
D.6運行netstore套用
附錄EHibernate3升級指南
E.1HibernateAPI變化
E.1.1包名
E.1.2org.hibernate.classic包
E.1.3Hibernate所依賴的第三方軟體包
E.1.4異常模型
E.1.5Session接口
E.1.6createSQLQuery()
E.1.7Lifecycle和Validatable接口
E.1.8Interceptor接口
E.1.9UserType和CompositeUserType接口
E.1.10FetchMode類
E.1.11PersistentEnum類
E.1.12對Blob和Clob的支持
E.1.13Hibernate中供擴展的API的變化
E.2元數據的變化
E.2.1檢索策略
E.2.2對象標識符的映射
E.2.3集合映射
E.2.4DTD
E.3查詢語句的變化
E.4把Hibernate2套用升級到Hibernate3套用
附錄F思考題答案
參考文獻