出版時間:2011-10 出版社:清華大學(xué)出版社 作者:[加拿大]Mike Keith 頁數(shù):460 譯者:[加拿大]Merrick Schincariol
Tag標(biāo)簽:無
內(nèi)容概要
本書上一版的目標(biāo)之一是盡可能地簡單明了,但是不短缺。我們盡力調(diào)整了它的大小,從而只描述我們感覺值得講述的內(nèi)容,但是依然確保適合在您的行李中攜帶本書,以便于您在公共汽車或火車上閱讀。然而,為了能夠保持我們在第1版中所有的材料,同時添加兩個章節(jié)和更多的功能,這看起來確實像是苛求。注解引用成為了這個要求的受害者。
作者簡介
基恩,是JPA l.0的共同規(guī)范領(lǐng)導(dǎo)(co-specification lead),也是JPA
2.0專家組的活躍成員。他是許多其他JCP(Java Community Process)專家組的成員,包括JSR 316、Java
EE6平臺規(guī)范,以及OSGi Alliance的企業(yè)專家組(Enterprise Expert
Group,EEG)。他獲得了卡爾頓(Carleton)大學(xué)的計算機科學(xué)碩士學(xué)位,并且在持久性和分布式系統(tǒng)的研究與實踐方面擁有20多年的經(jīng)驗。他撰寫了許多關(guān)于JPA的論文和文章,并在世界各地的眾多會議中發(fā)表過演講。他也是一名資深的Oracle架構(gòu)師。
席卡里爾,是一名Oracle顧問工程師,擅長中間件技術(shù)。他獲得了湖首(Lakehead)大學(xué)的計算機科學(xué)學(xué)士學(xué)位,擁有十年以上的企業(yè)軟件開發(fā)經(jīng)驗。在轉(zhuǎn)向編寫Java和J2EE應(yīng)用程序之前,他在前Java企業(yè)(pre-Java
enterprise)和商業(yè)智能領(lǐng)域從事咨詢工作。Merrick在大型系統(tǒng)和數(shù)據(jù)倉庫設(shè)計方面擁有豐富的經(jīng)驗,這使他能夠從一個成熟和實踐的角度來看待企業(yè)軟件,從而為他后來從事EJB容器實現(xiàn)的工作奠定了基礎(chǔ)。他還是Oracle
EJB 3.0實現(xiàn)的首席工程師。
書籍目錄
第1章 簡介
1.1 對象-關(guān)系映射
1.2 java持久化支持
1.2.1 專用解決方案
1.2.2 jdbc
1.2.3 企業(yè)javabean
1.2.4 java數(shù)據(jù)對象
1.3 為什么需要另一種標(biāo)準(zhǔn)
1.4 java持久化api
1.4.1 規(guī)范的歷史
1.4.2 概述
1.5 本章小結(jié)
第2章 入門
2.1 實體概述
2.1.1 持久性
2.1.2 標(biāo)識
2.1.3 事務(wù)性
2.1.4 粒度
2.2 實體元數(shù)據(jù)
2.2.1 注解
2.2.2 xml
2.2.3 異常配置
2.3 創(chuàng)建實體
2.4 實體管理器
2.4.1 獲取實體管理器
2.4.2 持久化實體
2.4.3 尋找實體
2.4.4 刪除實體
2.4.5 更新實體
2.4.6 事務(wù)
2.4.7 查詢
2.5 匯總
2.6 組裝
2.6.1 持久化單元
2.6.2 持久化存檔文件
2.7 本章小結(jié)
第3章 企業(yè)應(yīng)用程序
3.1 應(yīng)用程序組件模型
3.2 會話bean
3.2.1 無狀態(tài)會話bean
3.2.2 有狀態(tài)會話bean
3.2.3 單例會話bean
3.3 消息驅(qū)動bean
3.4 servlet
3.5 依賴性管理
3.5.1 依賴性查找
3.5.2 依賴性注入
3.5.3 聲明依賴性
3.6 事務(wù)管理
3.6.1 事務(wù)概述
3.6.2 java中的企業(yè)事務(wù)
3.7 使用java ee組件
3.7.1 使用無狀態(tài)會話bean
3.7.2 使用有狀態(tài)會話bean
3.7.3 使用單例會話bean
3.7.4 使用消息驅(qū)動bean
3.7.5 添加實體管理器
3.8 匯總
3.8.1 定義組件
3.8.2 定義用戶接口
3.8.3 組裝
3.9 本章小結(jié)
第4章 對象-關(guān)系映射
4.1 持久化注解
4.2 訪問實體狀態(tài)
4.2.1 字段訪問
4.2.2 屬性訪問
4.2.3 混合訪問
4.3 映射到表
4.4 映射簡單類型
4.4.1 列映射
4.4.2 延遲提取
4.4.3 大型對象
4.4.4 枚舉類型
4.4.5 時間類型
4.4.6 瞬態(tài)
4.5 映射主鍵
4.5.1 重寫主鍵列
4.5.2 主鍵類型
4.5.3 標(biāo)識符生成
4.6 關(guān)系
4.6.1 關(guān)系概念
4.6.2 映射概述
4.6.3 單值關(guān)聯(lián)
4.6.4 集合值關(guān)聯(lián)
4.6.5 延遲關(guān)系
4.7 嵌入對象
4.8 本章小結(jié)
第5章 集合映射
5.1 關(guān)系和元素集合
5.2 使用不同的集合類型
5.2.1 set或者collection
5.2.2 list
5.2.3 map
5.2.4 重復(fù)
5.2.5 null值
5.3 最佳實踐
5.4 本章小結(jié)
第6章 實體管理器
6.1 持久化上下文
6.2 實體管理器
6.2.1 容器托管的實體管理器
6.2.2 應(yīng)用程序托管的實體管理器
6.3 事務(wù)管理
6.3.1 jta事務(wù)管理
6.3.2 資源本地的事務(wù)
6.3.3 事務(wù)回滾和實體狀態(tài)
6.4 選擇實體管理器
6.5 實體管理器操作
6.5.1 持久化實體
6.5.2 尋找實體
6.5.3 刪除實體
6.5.4 級聯(lián)操作
6.5.5 清除持久化上下文
6.6 與數(shù)據(jù)庫同步
6.7 分離和合并
6.7.1 分離
6.7.2 合并分離的實體
6.7.3 與分離實體一起工作
6.8 本章小結(jié)
第7章 使用查詢
7.1 java持久化查詢語言
7.1.1 入門
7.1.2 篩選結(jié)果
7.1.3 投影結(jié)果
7.1.4 實體之間的聯(lián)接
7.1.5 聚合查詢
7.1.6 查詢參數(shù)
7.2 定義查詢
7.2.1 動態(tài)查詢定義
7.2.2 命名查詢定義
7.3 參數(shù)類型
7.4 執(zhí)行查詢
7.4.1 使用查詢結(jié)果
7.4.2 查詢分頁
7.4.3 查詢與未提交的更改
7.4.4 查詢超時
7.5 批量更新和刪除
7.5.1 使用批量更新和刪除
7.5.2 批量刪除和關(guān)系
7.6 查詢提示
7.7 查詢的最佳實踐
7.7.1 命名查詢
7.7.2 報告查詢
7.7.3 供應(yīng)商提示
7.7.4 無狀態(tài)會話bean
7.7.5 批量更新和刪除
7.7.6 提供程序的區(qū)別
7.8 本章小結(jié)
第8章 查詢語言
8.1 簡介
8.1.1 術(shù)語
8.1.2 示例數(shù)據(jù)模型
8.1.3 示例應(yīng)用程序
8.2 選擇查詢
8.2.1 select子句
8.2.2 from 子句
8.2.3 where子句
8.2.4 標(biāo)量表達式
8.2.5 order by子句
8.3 聚合查詢
8.3.1 聚合函數(shù)
8.3.2 group by子句
8.3.3 having子句
8.4 更新查詢
8.5 刪除查詢
8.6 本章小結(jié)
第9章 條件api
9.1 概述
9.1.1 條件api
9.1.2 參數(shù)化類型
9.1.3 動態(tài)查詢
9.2 構(gòu)建條件api查詢
9.2.1 創(chuàng)建查詢定義
9.2.2 基本結(jié)構(gòu)
9.2.3 條件對象和可變性
9.2.4 查詢根和路徑表達式
9.2.5 select子句
9.2.6 from子句
9.2.7 where子句
9.2.8 構(gòu)建表達式
9.2.9 order by子句
9.2.10 group by和having子句
9.3 強類型查詢定義
9.3.1 元模型api
9.3.2 強類型的api概述
9.3.3 規(guī)范化元模型
9.3.4 選擇正確的查詢類型
9.4 本章小結(jié)
第10章 高級對象-關(guān)系映射
10.1 表和列名
10.2 復(fù)雜的嵌入對象
10.2.1 高級嵌入映射
10.2.2 重寫嵌入關(guān)系
10.3 復(fù)合主鍵
10.3.1 id類
10.3.2 嵌入id類
10.4 派生標(biāo)識符
10.4.1 派生標(biāo)識符的基本規(guī)則
10.4.2 共享主鍵
10.4.3 多個映射特性
10.4.4 使用embeddedid
10.5 高級映射元素
10.5.1 只讀映射
10.5.2 可選性
10.6 高級關(guān)系
10.6.1 使用聯(lián)接表
10.6.2 避免聯(lián)接表
10.6.3 復(fù)合聯(lián)接列
10.6.4 孤兒刪除
10.6.5 映射關(guān)系狀態(tài)
10.7 多個表
10.8 繼承
10.8.1 類層次結(jié)構(gòu)
10.8.2 繼承模型
10.8.3 混合繼承
10.9 本章小結(jié)
第11章 高級主題
11.1 sql查詢
11.1.1 本地查詢與jdbc
11.1.2 定義和執(zhí)行sql查詢
11.1.3 sql結(jié)果集映射
11.1.4 參數(shù)綁定
11.2 生命周期回調(diào)
11.2.1 生命周期事件
11.2.2 回調(diào)方法
11.2.3 實體偵聽器
11.2.4 繼承和生命周期事件
11.3 驗證
11.3.1 使用約束
11.3.2 調(diào)用驗證
11.3.3 驗證組
11.3.4 創(chuàng)建新的約束
11.3.5 jpa中的驗證
11.3.6 啟用驗證
11.3.7 設(shè)置生命周期的驗證組
11.4 并發(fā)性
11.4.1 實體操作
11.4.2 實體訪問
11.5 刷新實體狀態(tài)
11.6 鎖定
11.6.1 樂觀鎖定
11.6.2 悲觀鎖定
11.7 緩存
11.7.1 通過層排序
11.7.2 共享緩存
11.8 utility類
11.8.1 persistenceutil
11.8.2 persistenceunitutil
11.9 本章小結(jié)
第12章 xml映射文件
12.1 元數(shù)據(jù)困惑
12.2 映射文件
12.2.1 禁用注解
12.2.2 持久化單元默認(rèn)值
12.2.3 映射文件默認(rèn)值
12.2.4 查詢和生成器
12.2.5 托管類和映射
12.3 本章小結(jié)
第13章 包裝和部署
13.1 配置持久化單元
13.1.1 持久化單元的名稱
13.1.2 事務(wù)類型
13.1.3 持久化提供程序
13.1.4 數(shù)據(jù)源
13.1.5 映射文件
13.1.6 托管類
13.1.7 共享緩存模式
13.1.8 驗證架構(gòu)
13.1.9 添加供應(yīng)商屬性
13.2 構(gòu)建和部署
13.2.1 部署類路徑
13.2.2 包裝選項
13.2.3 持久化單元的范圍
13.3 服務(wù)器外部
13.3.1 配置持久化單元
13.3.2 在運行時指定屬性
13.3.3 系統(tǒng)類路徑
13.4 架構(gòu)生成
13.4.1 唯一約束
13.4.2 null約束
13.4.3 基于字符串的列
13.4.4 浮點列
13.4.5 定義列
13.5 本章小結(jié)
第14章 測試
14.1 測試企業(yè)應(yīng)用程序
14.1.1 術(shù)語
14.1.2 在服務(wù)器外部測試
14.1.3 測試架構(gòu)
14.2 單元測試
14.2.1 測試實體
14.2.2 測試組件中的實體
14.2.3 單元測試中的實體管理器
14.3 集成測試
14.3.1 使用實體管理器
14.3.2 組件和持久化
14.4 最佳實踐
14.5 本章小結(jié)
第15章 遷移
15.1 從cmp實體bean遷移
15.1.1 劃定挑戰(zhàn)的范圍
15.1.2 實體bean轉(zhuǎn)換
15.2 從jdbc遷移
15.3 從其他的orm解決方案遷移
15.4 利用設(shè)計模式
15.4.1 傳輸對象
15.4.2 會話外觀
15.4.3 數(shù)據(jù)訪問對象
15.4.4 業(yè)務(wù)對象
15.4.5 快車道讀者
15.4.6 活動記錄
15.5 本章小結(jié)
章節(jié)摘錄
版權(quán)頁:插圖:14.1,1術(shù)語每個人對于單元測試或者集成測試的組成部分的理解并不一致。事實上,對于一組開發(fā)人員的任何調(diào)查都將很可能會產(chǎn)生各種各樣的結(jié)果,有些結(jié)果在本質(zhì)上類似,而其他的則會涉及測試的完全不同的方面。因此,我們認(rèn)為定義用于測試的術(shù)語非常重要,從而使得您可以把它翻譯成任何您熟悉的術(shù)語。我們把測試分為下列4種類別。單元測試(Unit Test)。單元測試是由開發(fā)人員編寫的,側(cè)重于隔離的應(yīng)用程序組件。取決于您所采用的方法,它可能是一個單一類或類的集合。唯一關(guān)鍵的定義元素在于,單元測試不會與任何服務(wù)器資源耦合(把這些資源去掉通常是測試過程的一部分)并且執(zhí)行得非??臁1仨毮軌驈腎DE中執(zhí)行單元測試的整個套件(suite),同時在幾秒鐘之內(nèi)得到結(jié)果。單元測試可以自動執(zhí)行,當(dāng)它作為與配置管理系統(tǒng)每次合并的一部分時,通常將它配置為自動執(zhí)行。集成測試(Integration Test)。集成測試也是由開發(fā)人員編寫的,重點在于應(yīng)用程序中的用例。通常它們?nèi)匀慌c應(yīng)用服務(wù)器解耦合,但是單元測試和集成測試之間的區(qū)別在于集成測試充分利用了諸如數(shù)據(jù)庫等外部資源。實際上集成測試會從應(yīng)用程序獲得一個組件并隔離運行,就像它仍然在應(yīng)用服務(wù)器中一樣。本地運行測試將比駐留在應(yīng)用服務(wù)器中的測試速度更快,但是仍低于單元測試。集成測試也是自動地執(zhí)行,通常至少每天會運行一次,以確保不會因開發(fā)人員而引入回歸。功能測試(Functional Test)。功能測試是黑盒測試,由質(zhì)量工程師而不是開發(fā)人員對它進行編寫和自動執(zhí)行。質(zhì)量工程師檢查產(chǎn)品的功能規(guī)范和用戶界面,并尋找可以不用理解(或關(guān)注)應(yīng)用程序的實現(xiàn)方式而驗證產(chǎn)品行為的自動測試方法。功能測試是應(yīng)用程序開發(fā)過程的關(guān)鍵部分,但是把執(zhí)行這些測試作為開發(fā)人員日常工作的一部分是不現(xiàn)實的。通常會獨立于常規(guī)的開發(fā)過程,以不同的進度安排來自動地執(zhí)行這些測試。·驗收測試(Acceptance Test)。驗收測試是客戶驅(qū)動的(customer-driven)。這些測試(通常是手工進行)直接由客戶或扮演客戶角色的代表來執(zhí)行。驗收測試的目標(biāo)是為了驗證應(yīng)用程序在用戶接口和行為方面是否滿足了客戶規(guī)定的需求。
媒體關(guān)注與評論
令人難以置信的是,自從初始的Java持久化API 1.0版本發(fā)布以來,已經(jīng)過去了三年。此間,我們目睹了它由成熟的API轉(zhuǎn)變成主流的持久化標(biāo)準(zhǔn)。與此同時,許多讀者使用本書的上一個版本作為掌握J(rèn)PA的起點,很高興我們在此過程中對您有所幫助!JPA 2.0包括了一系列新特性,例如,其他的對象關(guān)系映射、更靈活的對象建模、類型化查詢以及嶄新的條件API等。由于有很多內(nèi)容需要討論,因此我們很興奮能夠更新其內(nèi)容,解釋所有新特性,而且還包括了一些提示和技巧來幫助您在實踐中使用API。如果您已經(jīng)具備使用JPA 1.0的經(jīng)驗,那么應(yīng)該能夠從在JPA2.0中添加一個新特性時所指出的版本提示中獲益。這些提示旨在幫助用戶編寫一個JPA 1.0實現(xiàn),但還不能使用2.0特性。對于JPA新手來說,大可不必?fù)?dān)心會被遺忘。我們依然堅持最初的意圖:把沒有任何JPA基礎(chǔ)的人訓(xùn)練成JPA高級開發(fā)人員。在《Pro JPA 2中文版:精通Java持久化API》的前兩章中,您應(yīng)該能夠快速掌握入門所需的知識(資深的JPA編程人員可以從第3章開始)。最后,我們要表示感謝,因為是您使得本書的上一個版本如此成功。我們非常高興它已經(jīng)成為JPA開發(fā)人員的主要參考資源,希望您能夠發(fā)現(xiàn)《Pro JPA 2中文版:精通Java持久化API》具有同樣的價值。 ——Mike Keith(JPA2.0專家組成員)和Merrick Schincariol
編輯推薦
《Pro JPA2中文版:精通Java持久化API》:明確指導(dǎo)使用新的JPA 2創(chuàng)建健壯的,數(shù)據(jù)驅(qū)動的應(yīng)用程序。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載