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