精通JPA與Hibernate:Java對象持久化技術(shù)詳解—微課視頻版 版權(quán)信息
- ISBN:9787302576273
- 條形碼:9787302576273 ; 978-7-302-57627-3
- 裝幀:70g膠版紙
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
精通JPA與Hibernate:Java對象持久化技術(shù)詳解—微課視頻版 本書特色
本書詳細(xì)介紹JPA與Hibernate的實(shí)際運(yùn)用方法,深入闡述ORM的映射技術(shù),分享優(yōu)化數(shù)據(jù)庫訪問代碼的各種技巧,提供基于Spring+Tomcat+Hibernate+MySQL的綜合范例,并附贈500分鐘視頻講解及豐富的配套學(xué)習(xí)資源。
精通JPA與Hibernate:Java對象持久化技術(shù)詳解—微課視頻版 內(nèi)容簡介
本書詳細(xì)介紹了運(yùn)用JPA以及目前很成熟的Hibernate 5版本進(jìn)行Java對象持久化的技術(shù)。通過本書,讀者不僅能掌握用JPA和Hibernate工具對這兩種模型進(jìn)行映射的技術(shù),還能獲得設(shè)計(jì)與開發(fā)Java對象模型和關(guān)系數(shù)據(jù)模型的優(yōu)選經(jīng)驗(yàn)。本書將幫助讀者編寫出具有合理的軟件架構(gòu)以及好的運(yùn)行性能和并發(fā)性能的實(shí)用應(yīng)用程序。書中內(nèi)容注重理論與實(shí)踐相結(jié)合,列舉了大量具有典型性和實(shí)用價值的應(yīng)用實(shí)例,并提供了詳細(xì)的開發(fā)和部署步驟。無論對于Java開發(fā)的新手還是行家來說,本書都是精通Java對象持久化技術(shù)的推薦實(shí)用手冊。
精通JPA與Hibernate:Java對象持久化技術(shù)詳解—微課視頻版 目錄
目錄
源代碼
第1章Java應(yīng)用分層架構(gòu)及軟件模型
1.1應(yīng)用程序的分層體系結(jié)構(gòu)
1.1.1區(qū)分物理分層和邏輯分層
1.1.2軟件層的特征
1.1.3軟件分層的優(yōu)點(diǎn)
1.1.4軟件分層的缺點(diǎn)
1.1.5Java應(yīng)用的持久化層
1.2軟件的模型
1.2.1概念模型
1.2.2關(guān)系數(shù)據(jù)模型
1.2.3域模型
1.3小結(jié)
1.4思考題
第2章Java對象持久化技術(shù)概述
2.1直接通過JDBC API來持久化實(shí)體域?qū)ο?
2.2ORM簡介
2.2.1對象關(guān)系映射的概念
2.2.2描述對象關(guān)系映射信息的元數(shù)據(jù)
2.2.3訪問ORM中間件的API
2.2.4常用的ORM中間件
2.3實(shí)體域?qū)ο蟮钠渌志没J?
2.3.1主動域?qū)ο竽J?
2.3.2CMP模式
2.3.3運(yùn)用ORM的JPA模式
2.4小結(jié)
2.5思考題
第3章**個helloapp應(yīng)用
3.1創(chuàng)建Hibernate的配置文件
3.1.1用Java屬性文件作為Hibernate配置文件
3.1.2XML格式的Hibernate配置文件
3.2創(chuàng)建持久化類
3.3創(chuàng)建數(shù)據(jù)庫Schema
3.4創(chuàng)建對象關(guān)系映射文件
X
XI
3.4.1映射文件的文檔類型定義(DTD)
3.4.2把Customer持久化類映射到CUSTOMERS表
3.5通過Hibernate API操縱數(shù)據(jù)庫
3.5.1Hibernate的初始化
3.5.2Hibernate的遺留初始化方式
3.5.3訪問Hibernate的Session接口
3.6運(yùn)行helloapp應(yīng)用
3.6.1創(chuàng)建用于運(yùn)行本書范例的系統(tǒng)環(huán)境
3.6.2創(chuàng)建helloapp應(yīng)用的目錄結(jié)構(gòu)
3.6.3把helloapp應(yīng)用作為獨(dú)立應(yīng)用程序運(yùn)行
3.6.4把helloapp應(yīng)用作為Java Web應(yīng)用運(yùn)行
3.7小結(jié)
3.8思考題
第4章使用注解和JPA
4.1創(chuàng)建包含注解的持久化類
4.2方式一: 注解和Hibernate API
4.2.1創(chuàng)建Hibernate配置文件
4.2.2自動創(chuàng)建數(shù)據(jù)庫表
4.2.3使用Hibernate API
4.3方式二: 注解和JPA API
4.3.1創(chuàng)建JPA的配置文件
4.3.2使用JPA API
4.3.3從JPA API中獲得Hibernate API
4.4方式三: 對象關(guān)系映射文件和JPA API
4.5小結(jié)
4.6思考題
第5章對象關(guān)系映射基礎(chǔ)
5.1持久化類的屬性及訪問方法
5.1.1基本類型屬性和包裝類型屬性
5.1.2訪問持久化類屬性的方式
5.1.3在持久化類的訪問方法中加入程序邏輯
5.1.4設(shè)置派生屬性
5.1.5控制insert和update語句
5.1.6映射枚舉類型
5.2處理SQL引用標(biāo)識符
5.3創(chuàng)建命名策略
5.4設(shè)置數(shù)據(jù)庫Schema
5.5運(yùn)行范例程序
5.6使用Hibernate的對象關(guān)系映射文件
5.6.1設(shè)置訪問持久化類屬性的方式
5.6.2映射Customer類的虛擬name屬性
5.6.3忽略Customer類的avgPrice屬性
5.6.4映射Customer類的sex屬性
5.6.5映射Customer類的totalPrice派生屬性
5.6.6控制insert和update語句
5.6.7映射Customer類的description屬性
5.6.8設(shè)置自定義的命名策略
5.6.9設(shè)置數(shù)據(jù)庫Schema
5.6.10設(shè)置類的包名
5.7小結(jié)
5.8思考題
第6章映射對象標(biāo)識符
6.1關(guān)系數(shù)據(jù)庫按主鍵區(qū)分不同的記錄
6.1.1把主鍵定義為自動增長標(biāo)識符類型
6.1.2從序列(Sequence)中獲取自動增長的標(biāo)識符
6.2Java語言按內(nèi)存地址區(qū)分不同的對象
6.3Hibernate用對象標(biāo)識符(OID)來區(qū)分對象
6.4Hibernate的內(nèi)置標(biāo)識符生成器的用法
6.4.1increment標(biāo)識符生成器
6.4.2identity標(biāo)識符生成器
6.4.3sequence標(biāo)識符生成器
6.4.4table標(biāo)識符生成器
6.4.5auto標(biāo)識符生成器
6.5映射自然主鍵
6.5.1映射單個自然主鍵
6.5.2映射復(fù)合自然主鍵
6.6映射派生主鍵
6.7使用Hibernate的對象關(guān)系映射文件
6.7.1increment標(biāo)識符生成器
6.7.2identity標(biāo)識符生成器
6.7.3sequence標(biāo)識符生成器
6.7.4auto(native)標(biāo)識符生成器
6.7.5映射單個自然主鍵
6.7.6映射復(fù)合自然主鍵
6.7.7映射派生主鍵
6.8小結(jié)
6.9思考題
XII
XIII
第7章映射一對多關(guān)聯(lián)關(guān)系
7.1映射多對一單向關(guān)聯(lián)關(guān)系
7.1.1TransientPropertyValueException異常
7.1.2級聯(lián)持久化
7.2映射一對多雙向關(guān)聯(lián)關(guān)系
7.2.1建立持久化對象之間的關(guān)聯(lián)關(guān)系
7.2.2級聯(lián)刪除
7.2.3父子關(guān)系
7.3映射一對多雙向自身關(guān)聯(lián)關(guān)系
7.4改進(jìn)持久化類
7.5使用Hibernate的對象關(guān)系映射文件
7.5.1映射多對一單向關(guān)聯(lián)關(guān)系
7.5.2映射一對多雙向關(guān)聯(lián)關(guān)系
7.5.3映射一對多雙向自身關(guān)聯(lián)關(guān)系
7.6小結(jié)
7.7思考題
第8章通過JPA和Hibernate操縱對象(上)
8.1Java對象在JVM中的生命周期
8.2理解持久化緩存
8.2.1持久化緩存的作用
8.2.2臟檢查及清理緩存的機(jī)制
8.3Java對象在持久化層的狀態(tài)
8.3.1臨時對象(Transient Object)的特征
8.3.2持久化對象(Persistent Object)的特征
8.3.3被刪除對象(Removed Object)的特征
8.3.4游離對象(Detached Object)的特征
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.4.8Session的byId()方法
8.4.9Session的refresh()方法
8.5EntityManager接口的用法
8.6通過Hibernate API級聯(lián)操縱對象圖
8.6.1級聯(lián)保存臨時對象
8.6.2更新持久化對象
8.6.3持久化臨時對象
8.6.4更新游離對象
8.6.5遍歷對象圖
8.7通過JPA API級聯(lián)操縱對象圖
8.8小結(jié)
8.9思考題
第9章通過JPA和Hibernate操縱對象(下)
9.1與觸發(fā)器協(xié)同工作
9.2利用攔截器(Interceptor)生成審計(jì)日志
9.3Hibernate的事件處理API
9.4利用Hibernate的Envers生成審計(jì)日志
9.5JPA的事件處理API
9.6批量處理數(shù)據(jù)
9.6.1通過EntityManger或Session來進(jìn)行批量操作
9.6.2通過StatelessSession來進(jìn)行批量操作
9.6.3通過JPQL來進(jìn)行批量操作
9.6.4直接通過JDBC API來進(jìn)行批量操作
9.7通過JPA訪問元數(shù)據(jù)
9.8調(diào)用存儲過程
9.9小結(jié)
9.10思考題
第10章映射組成關(guān)系
10.1建立精粒度對象模型
10.2建立粗粒度關(guān)系數(shù)據(jù)模型
10.3映射組成關(guān)系
10.3.1區(qū)分值(Value)類型和實(shí)體(Entity)類型
10.3.2在應(yīng)用程序中訪問具有組成關(guān)系的持久化類
10.4映射復(fù)合組成關(guān)系
10.5使用Hibernate的對象關(guān)系映射文件
10.5.1映射組成關(guān)系
10.5.2映射復(fù)合組成關(guān)系
10.6小結(jié)
10.7思考題
XIV
XV
第11章Hibernate的映射類型
11.1Hibernate的內(nèi)置映射類型
11.1.1Java基本類型以及數(shù)字類型的Hibernate映射類型
11.1.2Java時間和日期類型的Hibernate映射類型
11.1.3Java大對象類型的Hibernate映射類型
11.1.4JDK自帶的個別Java類的Hibernate映射類型
11.1.5使用Hibernate內(nèi)置映射類型
11.2客戶化映射類型
11.2.1用客戶化映射類型取代Hibernate組件
11.2.2用UserType映射枚舉類型
11.2.3實(shí)現(xiàn)CompositeUserType接口
11.2.4運(yùn)行本節(jié)范例程序
11.3使用JPA Converter(類型轉(zhuǎn)換器)
11.4操縱Blob和Clob類型數(shù)據(jù)
11.5小結(jié)
11.6思考題
第12章映射繼承關(guān)系
12.1繼承關(guān)系樹的每個具體類對應(yīng)一個表
12.1.1用注解來映射
12.1.2用對象關(guān)系映射文件來映射
12.1.3操縱持久化對象
12.1.4其他映射方式
12.2繼承關(guān)系樹的根類對應(yīng)一個表
12.2.1用注解來映射
12.2.2用對象關(guān)系映射文件來映射
12.2.3操縱持久化對象
12.3繼承關(guān)系樹的每個類對應(yīng)一個表
12.3.1用注解來映射
12.3.2用對象關(guān)系映射文件來映射
12.3.3操縱持久化對象
12.4選擇繼承關(guān)系的映射方式
12.5映射復(fù)雜的繼承樹
12.5.1用注解來映射
12.5.2用對象關(guān)系映射文件來映射
12.6映射多對一多態(tài)關(guān)聯(lián)
12.7小結(jié)
12.8思考題
第13章Java集合類
13.1Set(集)
13.1.1Set的一般用法
13.1.2HashSet類
13.1.3TreeSet類
13.1.4向Set中加入持久化類的對象
13.2List(列表)
13.3Map(映射)
13.4小結(jié)
13.5思考題
第14章映射值類型集合
14.1映射Set(集)
14.2映射Bag(包)
14.3映射List(列表)
14.4映射Map(映射)
14.5對集合排序
14.5.1在數(shù)據(jù)庫中對集合排序
14.5.2在內(nèi)存中對集合排序
14.6映射組件類型集合
14.7小結(jié)
14.8思考題
第15章映射實(shí)體關(guān)聯(lián)關(guān)系
15.1映射一對一關(guān)聯(lián)
15.1.1按照外鍵映射
15.1.2按照主鍵映射
15.2映射單向多對多關(guān)聯(lián)
15.3映射雙向多對多關(guān)聯(lián)關(guān)系
15.3.1用@ManyToMany注解映射雙向關(guān)聯(lián)
15.3.2使用組件類集合
15.3.3把多對多關(guān)聯(lián)分解為兩個一對多關(guān)聯(lián)
15.4小結(jié)
15.5思考題
XVI
XVII
第16章Hibernate的檢索策略
16.1Hibernate的檢索策略簡介
16.2類級別的檢索策略
16.2.1立即檢索
16.2.2延遲檢索
16.3一對多和多對多關(guān)聯(lián)的檢索策略
16.3.1立即檢索(FetchType.EAGER)
16.3.2多查詢語句立即檢索(FetchMode.SELECT)
16.3.3延遲檢索(FetchType.LAZY)
16.3.4增強(qiáng)延遲檢索(LazyCollectionOption.EXTRA)
16.3.5批量檢索(@BatchSize注解)
16.3.6使用子查詢語句(FetchMode.SUBSELECT)
16.4多對一和一對一關(guān)聯(lián)的檢索策略
16.4.1立即檢索(FetchType.EAGER)
16.4.2延遲檢索(FetchType.LAZY)
16.4.3無代理延遲檢索
16.4.4批量檢索(@BatchSize注解)
16.5控制左外連接檢索的深度
16.6在程序中動態(tài)指定立即左外連接檢索
16.7定義和檢索對象圖
16.8用@FecthProfile注解指定檢索規(guī)則
16.9屬性級別的檢索策略
16.10小結(jié)
16.11思考題
第17章檢索數(shù)據(jù)API(上)
17.1檢索方式簡介
17.1.1JPQL檢索方式
17.1.2QBC檢索方式
17.1.3本地SQL檢索方式
17.1.4關(guān)于本章范例程序
17.1.5使用別名
17.1.6多態(tài)查詢
17.1.7對查詢結(jié)果排序
17.1.8分頁查詢
17.1.9檢索單個對象(getSingleResult()方法)
17.1.10按主鍵依次處理查詢結(jié)果(屬于Hibernate的功能)
17.1.11可滾動的結(jié)果集(屬于Hibernate的功能)
17.1.12綁定參數(shù)
17.1.13設(shè)置查詢附屬事項(xiàng)
17.1.14定義命名查詢語句
17.1.15調(diào)用函數(shù)
17.1.16元模型類(MetaModel Class)
17.2設(shè)定查詢條件
17.2.1比較運(yùn)算
17.2.2范圍運(yùn)算
17.2.3字符串模式匹配
17.2.4邏輯運(yùn)算
17.2.5集合運(yùn)算
17.2.6case when語句
17.3小結(jié)
17.4思考題
第18章檢索數(shù)據(jù)API(下)
18.1連接查詢
18.1.1默認(rèn)情況下關(guān)聯(lián)級別的運(yùn)行時檢索策略
18.1.2立即左外連接
18.1.3左外連接
18.1.4立即內(nèi)連接
18.1.5內(nèi)連接
18.1.6立即右外連接
18.1.7右外連接
18.1.8交叉連接
18.1.9隱式連接
18.1.10關(guān)聯(lián)級別運(yùn)行時的檢索策略
18.1.11用Tuple包裝查詢結(jié)果
18.2投影查詢
18.2.1用JavaBean包裝查詢結(jié)果
18.2.2過濾查詢結(jié)果中的重復(fù)元素
18.3報表查詢
18.3.1使用聚集函數(shù)
18.3.2分組查詢
18.3.3優(yōu)化報表查詢的性能
18.4高級查詢技巧
18.4.1動態(tài)查詢
18.4.2集合過濾
18.4.3子查詢
18.4.4本地SQL查詢
18.5查詢性能優(yōu)化
18.5.1Hibernate API中Query接口的iterate()方法
18.5.2Hibernate的查詢緩存
18.6小結(jié)
18.7思考題
XVIII
XIX
第19章Hibernate高級配置
19.1配置數(shù)據(jù)庫連接池
19.1.1使用默認(rèn)的數(shù)據(jù)庫連接池
19.1.2使用配置文件指定的數(shù)據(jù)庫連接池
19.1.3從容器中獲得數(shù)據(jù)源
19.1.4由Java應(yīng)用本身提供數(shù)據(jù)庫連接
19.2配置事務(wù)類型
19.3把SessionFactory與JNDI綁定
19.4配置JNDI
19.5配置日志
19.6使用XML格式的配置文件
19.7小結(jié)
19.8思考題
第20章聲明數(shù)據(jù)庫事務(wù)
20.1數(shù)據(jù)庫事務(wù)的概念
20.2聲明事務(wù)邊界的方式
20.3在mysql.exe客戶程序中聲明事務(wù)
20.4Java應(yīng)用通過JDBC API聲明JDBC事務(wù)
20.5Java應(yīng)用通過Hibernate API聲明JDBC事務(wù)
20.5.1處理異常
20.5.2Session與事務(wù)的關(guān)系
20.5.3設(shè)定事務(wù)超時
20.6Java應(yīng)用通過Hibernate API聲明JTA事務(wù)
20.7Java應(yīng)用通過JTA API聲明JTA事務(wù)
20.8小結(jié)
20.9思考題
第21章處理并發(fā)問題
21.1多個事務(wù)并發(fā)運(yùn)行時的并發(fā)問題
21.1.1**類丟失更新
21.1.2臟讀
21.1.3虛讀
21.1.4不可重復(fù)讀
21.1.5第二類丟失更新
21.2數(shù)據(jù)庫系統(tǒng)的鎖的基本原理
21.2.1鎖的多粒度性及自動鎖升級
21.2.2鎖的類型和兼容性
21.2.3死鎖及其防止辦法
21.3數(shù)據(jù)庫的事務(wù)隔離級別
21.3.1在mysql.exe程序中設(shè)置隔離級別
21.3.2在應(yīng)用程序中設(shè)置隔離級別
21.4在應(yīng)用程序中采用悲觀鎖
21.4.1利用數(shù)據(jù)庫系統(tǒng)的獨(dú)占鎖來實(shí)現(xiàn)悲觀鎖
21.4.2由應(yīng)用程序?qū)崿F(xiàn)悲觀鎖
21.5利用版本控制來實(shí)現(xiàn)樂觀鎖
21.5.1使用整數(shù)類型的版本控制屬性
21.5.2使用時間戳類型的版本控制屬性
21.5.3為持久化對象設(shè)置鎖
21.5.4強(qiáng)制更新版本
21.6實(shí)現(xiàn)樂觀鎖的其他方法
21.7小結(jié)
21.8思考題
第22章管理Hibernate的緩存
22.1緩存的基本原理
22.1.1持久化層的緩存的范圍
22.1.2持久化層的緩存的并發(fā)訪問策略
22.2Hibernate的二級緩存結(jié)構(gòu)
22.3管理Hibernate的**級緩存
22.4管理Hibernate的第二級緩存
22.4.1獲得EHCache緩存插件的類庫
22.4.2在persistence.xml文件中配置第二級緩存
22.4.3在持久化類中啟用實(shí)體數(shù)據(jù)緩存、自然主鍵緩存和集合緩存
22.4.4設(shè)置EHCache的ehcache.xml配置文件
22.4.5獲取第二級緩存的統(tǒng)計(jì)信息
22.4.6設(shè)置第二級緩存的讀寫模式
22.4.7在程序中控制第二級緩存
22.4.8查詢緩存
22.5小結(jié)
22.6思考題
XX
XXI
第23章管理Session和實(shí)現(xiàn)對話
23.1管理Session對象的生命周期
23.1.1Session對象的生命周期與本地線程綁定
23.1.2Session對象的生命周期與JTA事務(wù)綁定
23.2實(shí)現(xiàn)對話
23.2.1使用游離對象
23.2.2使用手動清理緩存模式下的Session
23.2.3通過JPA API來實(shí)現(xiàn)對話
23.3小結(jié)
23.4思考題
第24章Spring、JPA與Hibernate整合
24.1本章范例所涉及軟件的Java類庫
24.2設(shè)置Spring的配置文件
24.3編寫本章范例的Java類
24.3.1編寫Customer實(shí)體類
24.3.2編寫CustomerDao數(shù)據(jù)訪問接口和類
24.3.3編寫CustomerService業(yè)務(wù)邏輯服務(wù)接口和類
24.3.4編寫測試類Tester
24.4小結(jié)
第25章運(yùn)用Spring和Hibernate創(chuàng)建購物網(wǎng)站
25.1實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)
25.2實(shí)現(xiàn)業(yè)務(wù)邏輯
25.3控制層訪問模型層
25.4netstore應(yīng)用的訂單業(yè)務(wù)
25.5小結(jié)
附錄A標(biāo)準(zhǔn)SQL語言的用法
A.1數(shù)據(jù)完整性
A.1.1實(shí)體完整性
A.1.2域完整性
A.1.3參照完整性
A.2DDL數(shù)據(jù)定義語言
A.3DML數(shù)據(jù)操縱語言
A.4DQL數(shù)據(jù)查詢語言
A.4.1簡單查詢
A.4.2連接查詢
A.4.3子查詢
A.4.4聯(lián)合查詢
A.4.5報表查詢
附錄BJava語言的反射機(jī)制
附錄C發(fā)布和運(yùn)行netstore應(yīng)用
附錄D思考題答案
附錄E書中涉及軟件獲取途徑
展開全部
精通JPA與Hibernate:Java對象持久化技術(shù)詳解—微課視頻版 作者簡介
孫衛(wèi)琴,知名IT作家和Java專家,畢業(yè)于上海交通大學(xué),隨后主要從事基于Java的軟件開發(fā)工作,在此其間還從事Java方面的培訓(xùn)和咨詢工作。2002年開始Java技術(shù)領(lǐng)域的創(chuàng)作,文風(fēng)清晰嚴(yán)謹(jǐn)、深入淺出,深受讀者歡迎,其多部作品的銷量在同類書籍中經(jīng)常位居全國榜首。