內容簡介

  本書上一版的目標之一是盡可能地簡單明了,但是不短缺。我們盡力調整了它的大小,從而只描述我們感覺值得講述的內容,但是依然確保適合在您的行李中攜帶本書,以便于您在公共汽車或火車上閱讀。然而,為了能夠保持我們在第1版中所有的材料,同時添加兩個章節和更多的功能,這看起來確實像是苛求。注解引用成為了這個要求的受害者。


  Mike Keith是JPA l.0的共同規範領導(co-specification lead),也是JPA 2.0專家組的活躍成員。他是許多其他JCP(Java Community Process)專家組的成員,包括JSR 316、Java EE6平台規範,以及OSGi Alliance的企業專家組(Enterprise Expert Group,EEG)。他獲得了卡爾頓(Carleton)大學的計算機科學碩士學位,並且在持久性和分布式系統的研究與實踐方面擁有20多年的經驗。他撰寫了許多關于JPA的論文和文章,並在世界各地的眾多會議中發表過演講。他也是一名資深的Oracle架構師。

  Merrick Schinariol是一名Oracle顧問工程師,擅長中間件技術。他獲得了湖首(Lakehead)大學的計算機科學學士學位,擁有十年以上的企業軟件開發經驗。在轉向編寫Java和J2EE應用程序之前,他在前Java企業(pre-Java enterprise)和商業智能領域從事咨詢工作。Merrick在大型系統和數據倉庫設計方面擁有豐富的經驗,這使他能夠從一個成熟和實踐的角度來看待企業軟件,從而為他後來從事EJB容器實現的工作奠定了基礎。他還是Oracle EJB 3.0實現的首席工程師。
 

目錄

第1章 簡介
1.1 對象-關系映射
1.2 java持久化支持
1.2.1 專用解決方案
1.2.2 jdbc
1.2.3 企業javabean
1.2.4 java數據對象
1.3 為什麼需要另一種標準
1.4 java持久化api
1.4.1 規範的歷史
1.4.2 概述
1.5 本章小結
第2章 入門
2.1 實體概述
2.1.1 持久性
2.1.2 標識
2.1.3 事務性
2.1.4 粒度
2.2 實體元數據
2.2.1 注解
2.2.2 xml
2.2.3 異常配置
2.3 創建實體
2.4 實體管理器
2.4.1 獲取實體管理器
2.4.2 持久化實體
2.4.3 尋找實體
2.4.4 刪除實體
2.4.5 更新實體
2.4.6 事務
2.4.7 查詢
2.5 匯總
2.6 組裝
2.6.1 持久化單元
2.6.2 持久化存檔文件
2.7 本章小結
第3章 企業應用程序
3.1 應用程序組件模型
3.2 會話bean
3.2.1 無狀態會話bean
3.2.2 有狀態會話bean
3.2.3 單例會話bean
3.3 消息驅動bean
3.4 servlet
3.5 依賴性管理
3.5.1 依賴性查找
3.5.2 依賴性注入
3.5.3 聲明依賴性
3.6 事務管理
3.6.1 事務概述
3.6.2 java中的企業事務
3.7 使用java ee組件
3.7.1 使用無狀態會話bean
3.7.2 使用有狀態會話bean
3.7.3 使用單例會話bean
3.7.4 使用消息驅動bean
3.7.5 添加實體管理器
3.8 匯總
3.8.1 定義組件
3.8.2 定義用戶接口
3.8.3 組裝
3.9 本章小結
第4章 對象-關系映射
4.1 持久化注解
4.2 訪問實體狀態
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 瞬態
4.5 映射主鍵
4.5.1 重寫主鍵列
4.5.2 主鍵類型
4.5.3 標識符生成
4.6 關系
4.6.1 關系概念
4.6.2 映射概述
4.6.3 單值關聯
4.6.4 集合值關聯
4.6.5 延遲關系
4.7 嵌入對象
4.8 本章小結
第5章 集合映射
5.1 關系和元素集合
5.2 使用不同的集合類型
5.2.1 set或者collection
5.2.2 list
5.2.3 map
5.2.4 重復
5.2.5 null值
5.3 最佳實踐
5.4 本章小結
第6章 實體管理器
6.1 持久化上下文
6.2 實體管理器
6.2.1 容器托管的實體管理器
6.2.2 應用程序托管的實體管理器
6.3 事務管理
6.3.1 jta事務管理
6.3.2 資源本地的事務
6.3.3 事務回滾和實體狀態
6.4 選擇實體管理器
6.5 實體管理器操作
6.5.1 持久化實體
6.5.2 尋找實體
6.5.3 刪除實體
6.5.4 級聯操作
6.5.5 清除持久化上下文
6.6 與數據庫同步
6.7 分離和合並
6.7.1 分離
6.7.2 合並分離的實體
6.7.3 與分離實體一起工作
6.8 本章小結
第7章 使用查詢
7.1 java持久化查詢語言
7.1.1 入門
7.1.2 篩選結果
7.1.3 投影結果
7.1.4 實體之間的聯接
7.1.5 聚合查詢
7.1.6 查詢參數
7.2 定義查詢
7.2.1 動態查詢定義
7.2.2 命名查詢定義
7.3 參數類型
7.4 執行查詢
7.4.1 使用查詢結果
7.4.2 查詢分頁
7.4.3 查詢與未提交的更改
7.4.4 查詢超時
7.5 批量更新和刪除
7.5.1 使用批量更新和刪除
7.5.2 批量刪除和關系
7.6 查詢提示
7.7 查詢的最佳實踐
7.7.1 命名查詢
7.7.2 報告查詢
7.7.3 供應商提示
7.7.4 無狀態會話bean
7.7.5 批量更新和刪除
7.7.6 提供程序的區別
7.8 本章小結
第8章 查詢語言
8.1 簡介
8.1.1 術語
8.1.2 示例數據模型
8.1.3 示例應用程序
8.2 選擇查詢
8.2.1 select子句
8.2.2 from子句
8.2.3 where子句
8.2.4 標量表達式
8.2.5 order by子句
8.3 聚合查詢
8.3.1 聚合函數
8.3.2 group by子句
8.3.3 having子句
8.4 更新查詢
8.5 刪除查詢
8.6 本章小結
第9章 條件api
9.1 概述
9.1.1 條件api
9.1.2 參數化類型
9.1.3 動態查詢
9.2 構建條件api查詢
9.2.1 創建查詢定義
9.2.2 基本結構
9.2.3 條件對象和可變性
9.2.4 查詢根和路徑表達式
9.2.5 select子句
9.2.6 from子句
9.2.7 where子句
9.2.8 構建表達式
9.2.9 order by子句
9.2.10 group by和having子句
9.3 強類型查詢定義
9.3.1 元模型api
9.3.2 強類型的api概述
9.3.3 規範化元模型
9.3.4 選擇正確的查詢類型
9.4 本章小結
第10章 高級對象-關系映射
10.1 表和列名
10.2 復雜的嵌入對象
10.2.1 高級嵌入映射
10.2.2 重寫嵌入關系
10.3 復合主鍵
10.3.1 id類
10.3.2 嵌入id類
10.4 派生標識符
10.4.1 派生標識符的基本規則
10.4.2 共享主鍵
10.4.3 多個映射特性
10.4.4 使用embeddedid
10.5 高級映射元素
10.5.1 只讀映射
10.5.2 可選性
10.6 高級關系
10.6.1 使用聯接表
10.6.2 避免聯接表
10.6.3 復合聯接列
10.6.4 孤兒刪除
10.6.5 映射關系狀態
10.7 多個表
10.8 繼承
10.8.1 類層次結構
10.8.2 繼承模型
10.8.3 混合繼承
10.9 本章小結
第11章 高級主題
11.1 sql查詢
11.1.1 本地查詢與jdbc
11.1.2 定義和執行sql查詢
11.1.3 sql結果集映射
11.1.4 參數綁定
11.2 生命周期回調
11.2.1 生命周期事件
11.2.2 回調方法
11.2.3 實體偵听器
11.2.4 繼承和生命周期事件
11.3 驗證
11.3.1 使用約束
11.3.2 調用驗證
11.3.3 驗證組
11.3.4 創建新的約束
11.3.5 jpa中的驗證
11.3.6 啟用驗證
11.3.7 設置生命周期的驗證組
11.4 並發性
11.4.1 實體操作
11.4.2 實體訪問
11.5 刷新實體狀態
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 本章小結
第12章 xml映射文件
12.1 元數據困惑
12.2 映射文件
12.2.1 禁用注解
12.2.2 持久化單元默認值
12.2.3 映射文件默認值
12.2.4 查詢和生成器
12.2.5 托管類和映射
12.3 本章小結
第13章 包裝和部署
13.1 配置持久化單元
13.1.1 持久化單元的名稱
13.1.2 事務類型
13.1.3 持久化提供程序
13.1.4 數據源
13.1.5 映射文件
13.1.6 托管類
13.1.7 共享緩存模式
13.1.8 驗證架構
13.1.9 添加供應商屬性
13.2 構建和部署
13.2.1 部署類路徑
13.2.2 包裝選項
13.2.3 持久化單元的範圍
13.3 服務器外部
13.3.1 配置持久化單元
13.3.2 在運行時指定屬性
13.3.3 系統類路徑
13.4 架構生成
13.4.1 唯一約束
13.4.2 null約束
13.4.3 基于字符串的列
13.4.4 浮點列
13.4.5 定義列
13.5 本章小結
第14章 測試
14.1 測試企業應用程序
14.1.1 術語
14.1.2 在服務器外部測試
14.1.3 測試架構
14.2 單元測試
14.2.1 測試實體
14.2.2 測試組件中的實體
14.2.3 單元測試中的實體管理器
14.3 集成測試
14.3.1 使用實體管理器
14.3.2 組件和持久化
14.4 最佳實踐
14.5 本章小結
第15章 遷移
15.1 從cmp實體bean遷移
15.1.1 劃定挑戰的範圍
15.1.2 實體bean轉換
15.2 從jdbc遷移
15.3 從其他的orm解決方案遷移
15.4 利用設計模式
15.4.1 傳輸對象
15.4.2 會話外觀
15.4.3 數據訪問對象
15.4.4 業務對象
15.4.5 快車道讀者
15.4.6 活動記錄
15.5 本章小結
 

2006年,當Java持久化API首次作為EJB 3.0的一部分發布時,很快它就成為Java EE5中最激動人心的技術之一。如同EJB 3.0 -樣,作為EJB 3.0 -部分的JPA 1.0也同時側重于功能性和易用性兩個方面,通過Java語言注解以及合理的默認值為配置提供方便。

然而,JPA l.0並不僅僅是早期EJB版本中重量級實體bean組件的一個急需的替換品,雖然這是其最初存在的原因。同時,它也作為一種更為通用的對象關系映射工具,迅速地得到了認可,並且也得到了擴展,以滿足在Java SE環境以及其他Java EE容器類型中使用它的請求。作為一個“規範中的規範”,它最終在發布時,已經比其“父版本”更加完善。

除了查詢語言之外,從JPA的核心功能中很難發現它起初是作為EJB 3.0工作的一部分。當然,JPA的真正起源在于對象關系映射的產品和項目,如TopLink(10周年剛過)、Hibernate和JDO,這些產品的許多首席架構師(如Mike Keith)都已經成為了JPA的主要貢獻者。

然而,JPA l.0僅儀表示了EJB 3.0專家組工作(和工作量)的一方面,而且,雖然它涵蓋了O/R映射所需的核心功能,但是相比于為其提供原始實現的許多產品和項目,它並不是與它們幾乎一樣完整的API。

JPA 2.0的任務是鞏固標準、擴人範圍,從而為開發人員提供關于簡單和復雜應用程序的更好的可移植性。像JPA 1.0一樣,它由該領域中已經存在的技術經驗所驅動,並且由社區成員的請求所引導。

在這個版本中,JPA 2.0規範和API的大小都翻倍了。它附加的內容包括為Java開發人員提供了許多自然的建模結構的支持、擴展的標準化映射選項、基于對象的條件查詢API、元模型API、支持自動驗證以及支持悲觀鎖定等。

在本書中,Mike Keith和Merrick Schincariol給出了對Java持久化API的全面指南。作為作者,他們在O/R映射技術方面都具有相當豐富的經驗,同時,Mike還具有建設JPA本身的多年經驗。

本書涵蓋了Java持久化API的所有方面。它既全面又易于理解,同時還兼具趣味性和嚴格性。它不僅向讀者介紹了API的各個方面,討論了如何以最有效的方式使用API的各個部分,而且還解釋了隱藏的內部原理,以及如何避免當使用不同的供應商實現時的可移植性陷阱。貫穿本書,作者仔細地解釋了對象關系映射的工作原理,從而使讀者不僅可了解Java持久性功能的相關知識,而且還可以深入地理解它的工作原理。希望您會喜歡它。

Linda DeMichiel
Specification Lead,Java Persistence 2.0
Sun Microsystems
Santa Clara,California
網路書店 類別 折扣 價格
  1. 新書
    87
    $312