程式天下

cer)14.3Toplin JPA14.3.1Toplin g15.1.2Sprin

內容介紹

《程式天下:EJB JPA資料庫持久層開發實踐詳解》全面介紹了JPA(Java Persistence API)的相關知識。全書共分4篇,第1篇介紹了JPA產生的背景及JPA的運行環境、流行的開發工具IDE等;第2篇介紹了JPA基本知識,包括映射實體、映射實體關係、實體管理器及JPQL的相關知識;第3篇進一步介紹了關於JPA的高級套用,包括持久化上下文、XML映射檔案、打包和部署、JPA實現框架和與Spring集成等;第4篇介紹了三個完整案例,分別是學生成績管理系統(Servlet+JPA)、寵物商店(Swing+JPA)、部落格系統(Struts2+Spring2+JPA)。

作品目錄

第一篇 初識JPA
第1章 JPA概述
1.1 什麼是數據持久化
1.2 Java持久化技術
1.2.1 序列化(Serialization)
1.2.2 JDBC
1.2.3 關係對象映射(ORM)
1.2.4 對象資料庫(ODB)
1.2.5 Java數據對象(JDO)
1.2.6 EJB 2.X
1.3 JPA(Java Persistence API)概述
1.3.1 什麼是JPA
1.3.2 JPA的歷史
1.3.3 下載JPA規範
1.3.4 JPA的優勢
1.3.5 EJB 3與JPA的關係
1.3.6 常見的實現JPA的框架
1.4 對象關係映射(ORM)
1.4.1 什麼是對象關係映射
1.4.2 對象關係映射模式
1.5 本章小結
第2章 搭建JPA開發和運行環境
2.1 JBoss概述
2.1.1 JBoss Application Server
2.1.2 JBoss IDE for Eclipse
2.2 JBoss套用伺服器的搭建
2.2.1 下載和安裝JBoss伺服器
2.2.2 啟動JBoss伺服器
2.2.3 停止JBoss伺服器
2.2.4 JBoss的檔案目錄結構
2.3 JBoss IDE開發環境的搭建
2.3.1 下載JBoss IDE for Eclipse
2.3.2 Eclipse中配置JBoss
2.3.3 Eclipse中啟動和停止JBoss
2.4 MySQL資料庫的下載和安裝
2.4.1 MySQL資料庫概述
2.4.2 下載MySQL
2.4.3 安裝MySQL
2.4.4 運行MySQL
2.4.5 下載MySQL客戶端
2.5 本章小結
第3章 JPA之初體驗
3.1 第一個Entity實體類
3.1.1 第一個POJO類
3.1.2 資料庫中對應的表
3.1.3 使用注釋(Annotations)配置ORM映射
3.1.4 配置persistence.xml
3.2 第一個SessionBean
3.2.1 定義Remote接口
3.2.2 SessionBean類
3.3 使用EntityManager操作實體
3.3.1 依賴注入EntityManager
3.3.2 添加Entity
3.3.3 根據主鍵查找Entity
3.3.4 更新Entity
3.3.5 刪除Entity
3.3.6 執行查詢
3.4 部署EJB
3.4.1 打EJB-JAR包
3.4.2 部署EJB
3.4.3 配置DataSource數據源
3.4.4 啟動JBoss伺服器
3.4.5 查看JBoss控制台JMX-Console
3.5 調用EJB的Client
3.5.1 TestClient類
3.5.2 運行Client
3.6 本章小結
第4章 JPA開發工具
4.1 Eclipse Dali JPA 概述
4.1.1 什麼是Dali JPA
4.1.2 下載Dali JPA
4.1.3 Dali JPA界面預覽
4.2 連線資料庫
4.3 開始JPA開發
4.3.1 創建JPA項目
4.3.2 創建持久化類
4.4 本章小結
第二篇 JPA進階
第5章 映射持久化對象(Entity)
5.1 實體映射基礎
5.1.1 簡單的POJO類
5.1.2 映射實體(@Entity)
5.1.3 無參的構造方法
5.1.4 實現Serializable接口
5.1.5 可繼承性
5.1.6 標註主鍵(@Id)
5.1.7 默認實體映射
5.2 映射表和欄位
5.2.1 映射表(@Table)
5.2.2 映射方法和屬性(@Column)
5.2.3 可持久化的基本數據類型
5.2.4 映射最佳化一:基本數據類型VS封裝類
5.2.5 映射最佳化二:@Basic設定載入方式
5.3 主鍵映射
5.3.1 主鍵標識(@Id)
5.3.2 自增主鍵
5.3.3 表生成器(@ TableGenerator)
5.3.4 Sequence生成器(@ Sequence)
5.3.5 Identity生成器
5.3.6 複合主鍵(@IdClass)
5.3.7 嵌入式主鍵(@EmbeddedId)
5.3.8 幾種主鍵生成策略的比較
5.4 映射特殊類型
5.4.1 映射Blob和Clob類型(@Lob)
5.4.2 映射時間(Temporal)類型(@Temporal)
5.4.3 映射枚舉(Enumerated)型
5.5 映射非持久化類型(@Transient)
5.6 本章小結
第6章 實體關係映射
6.1 實體關係概述
6.1.1 實體關係的方向性
6.1.2 實體關係的數量性
6.2 一對一(@OneToOne)
6.2.1 單向關聯(Unidirectional)
6.2.2 一對一(@ OneToOne)
6.2.3 關聯指定列(@JoinColumn)
6.2.4 雙向關聯(Bidirectional)
6.2.5 主鍵關聯(@PrimaryKeyJoinColumn)
6.2.6 默認關聯
6.2.7 一對一映射的一般步驟
6.3 一對多(@OneToMany)
6.3.1 一對多模型(單向)
6.3.2 映射策略 89
6.3.3 映射策略——外鍵關聯
6.3.4 一對多(@OneToMany)
6.3.5 映射策略——表關聯
6.3.6 表關聯(@ JoinTable)
6.3.7 默認關聯
6.4 多對一(@ManyToOne)
6.4.1 多對一 模型(單向)
6.4.2 映射策略——外鍵關聯
6.4.3 多對一(@ManyToOne)
6.4.4 默認關聯
6.5 高級一對多和多對一映射
6.5.1 雙向關聯模型
6.5.2 雙向關聯
6.5.3 一對多(多對一)映射的一般步驟
6.6 多對多(@ManyToMany)
6.6.1 多對多模型(單向)
6.6.2 映射策略——表關聯
6.6.3 @ManyToMany
6.6.4 雙向關聯模型
6.6.5 默認關聯
6.6.6 多對多映射的一般步驟
6.7 集合類的選擇
6.7.1 集合類的區別
6.7.2 帶排序的集合
6.7.3 帶Key值的集合
6.8 關係映射示例:客戶關係管理系統
6.8.1 實體關係類圖
6.8.2 資料庫表結構
6.8.3 客戶實體
6.8.4 地址實體
6.8.5 聯繫人實體
6.8.6 頭像實體
6.8.7 電話實體
6.8.8 訂單實體
6.8.9 訂單明細實體
6.8.10 產品實體
6.9 本章小結
第7章 實體映射的高級套用
7.1 多表映射
7.1.1 兩個表映射為一個實體
7.1.2 從表注釋(@ SecondaryTable)
7.1.3 多個表映射為一個實體
7.1.4 多個從表注釋(@ SecondaryTables)
7.2 嵌入映射
7.2.1 嵌入映射表結構
7.2.2 嵌入類
7.2.3 嵌入到實體
7.2.4 映射屬性(@AttributeOverride)
7.3 實體的繼承策略
7.3.1 類結構關係圖
7.3.2 三種繼承策略
7.3.3 繼承關係的實體保存在一個表(SINGLE_TABLE)
7.3.4 每個實體子類保存在一個表(JOINED)
7.3.5 每個實體類保存在一個表(TABLE_PER_CLASS)
7.3.6 三種繼承策略對比
7.4 深入實體繼承
7.4.1 繼承自抽象(abstract)實體類
7.4.2 繼承自非映射實體類(Mapped Superclasses)
7.4.3 繼承自非實體類
7.4.4 繼承的設計重構
7.4.5 帶繼承關係的實體查詢(多態)
7.5 本章小結
第8章 實體管理器(EntityManager)
8.1 實體管理器概述
8.1.1 什麼是實體管理器
8.1.2 Entity Manager API
8.1.3 EntityManager方法詳解
8.2 操作實體(CRUD)
8.2.1 創建實體(持久化)
8.2.2 持久化帶關係的實體
8.2.3 根據主鍵查找實體
8.2.4 實體屬性及實體的載入方式
8.2.5 更新實體
8.2.6 更新實體關係
8.2.7 刪除實體
8.2.8 刪除關聯的實體
8.3 實體的生命周期
8.3.1 實體的幾種狀態
8.3.2 瞬時狀態(Transient)
8.3.3 持久化狀態(Persisted)
8.3.4 託管狀態(Attatched或Managed)
8.3.5 游離狀態(Detached)
8.3.6 銷毀狀態(Removed)
8.3.7 分析實體狀態實例
8.4 實體的高級操作
8.4.1 實體的聯級操作
8.4.2 獲得實體的另一種方式
8.4.3 同步資料庫(flush與flushType)
8.4.4 refresh()和clear()方法
8.5 實體監聽器(Listener)
8.5.1 回調事件(Callback Events)
8.5.2 監聽器定義在實體中
8.5.3 監聽器定義在實體外
8.5.4 默認實體監聽器
8.5.5 繼承中的實體監聽器
8.5.6 監聽器的調用順序
8.5.7幾種監聽實體方式的比較
8.6 本章小結
第9章 查詢(Query)
9.1 Query 概述
9.1.1 一個簡單的查詢示例
9.1.2 Query API
9.1.3 Query 方法詳解
9.1.4 Query的簡化寫法
9.2 JPQL入門
9.2.1 查詢實體
9.2.2 查詢實體屬性
9.2.3 查詢關聯實體
9.3 準備查詢
9.3.1 查詢參數方法一——命名設定參數
9.3.2 查詢參數方法二——位置設定參數
9.3.3 不帶參數的查詢
9.3.4 查詢策略的選擇
9.3.5 分頁查詢
9.3.6 設定提示(Hints)
9.3.7 設定提交模式(FlushMode)
9.4 命名查詢(Named Query)
9.4.1 命名查詢示例
9.4.2 定義查詢命名
9.4.3 @NamedQuery注釋
9.5 查詢結果的處理
9.5.1 執行查詢
9.5.2 查詢結果的類型
9.5.3 查詢結果為實體
9.5.4 查詢結果為基本數據類型
9.5.5 查詢結果為數組
9.5.6 查詢結果為自定義對象
9.6 本地查詢(Native Query)
9.6.1 本地查詢概述
9.6.2 執行本地查詢
9.6.3 查詢結果與實體映射
9.6.4 自定義查詢映射
9.6.5 @SqlResultSetMapping
9.6.6 @NamedNativeQuery本地命名查詢
9.7 查詢技巧
9.7.1 日期類型的查詢
9.7.2 動態查詢
9.8 本章小結
第10章 查詢語言(JPQL)
10.1 JPQL基礎
10.1.1 JPQL基本語法
10.1.2 SELECT子句
10.1.3 繼承實體的查詢
10.2 FROM語句
10.2.1 FROM基本語法
10.2.2 基於集合實體的查詢(關聯查詢)
10.2.3 關聯查詢
10.2.4 內連線(INNER JOIN)
10.2.5 左連線(LEFT JOIN)
10.2.6 抓取連線(FETCH JOIN)
10.2.7 唯一性查詢(DISTINCT)
10.3 WHERE語句
10.3.1 WHERE基本語法
10.3.2 直接量(Literals)
10.3.3 查詢條件操作符優先權
10.3.4 算術操作符(Arithmetic Operators)
10.3.5 邏輯操作符(Logic Operators)
10.3.6 比較操作符(Comparison Operators)
10.3.7 BETWEEN操作符
10.3.8 IN操作符
10.3.9 LIKE操作符
10.3.10 NULL操作符
10.3.11 EMPTY操作符
10.3.12 MEMBER OF操作符
10.4 函式表達式
10.4.1 字元串函式
10.4.2 數值函式
10.4.3 日期函式
10.5 子查詢
10.5.1 基本子查詢
10.5.2 EXISTS表達式
10.5.3 ALL和ANY表達式
10.6 分組查詢
10.6.1 分組查詢基本語法
10.6.2 分組查詢函式
10.7 ORDER BY表達式
10.8 批量操作
10.8.1 批量更新
10.8.2 批量刪除
10.8.3 執行批量操作
10.9 本章小結
第三篇 JPA高級套用
第11章 持久化上下文
11.1 獲得EntityManager對象
11.1.1 Java EE環境與J2SE環境
11.1.2 兩種類型的EntityManager對象
11.1.3 容器託管的(container-managed)EntityManager對象
11.1.4 套用託管的(application-managed)EntityManager對象
11.1.5 ThreadLocal的使用
11.2 實體管理器工廠(EntityManagerFactory)
11.2.1 javax.persistenc.Persistence API
11.2.2 EntityManagerFactory API
11.2.3 實現自己的JPA
11.3 容器託管的EntityManager持久化上下文
11.3.1 事務範圍TRANSACTION
11.3.2 擴展範圍EXTENDED
11.4 事務管理
11.4.1 事務與EntityManager
11.4.2 JTA管理事務
11.4.3 RESOURCE_LOCAL管理事務
11.4.4 EntityTransaction API
11.5 套用託管的EntityManager的持久化上下文
11.5.1 無狀態的會話Bean與JTA事務(事務範圍)
11.5.2 無狀態的會話Bean與JTA事務(擴展範圍)
11.5.3 有狀態的會話Bean與JTA事務
11.5.4 RESOURCE_LOCAL事務
11.6 本章小結
第12章 XML映射檔案
12.1 XML映射配置VS注釋
12.2 映射檔案概述
12.2.1 映射檔案的保存位置
12.2.2 獲取映射檔案DTD
12.3 映射基礎
12.3.1 映射檔案的基本結構
12.3.2 映射檔案的基本元素
12.4 配置注釋< persistence-unit-metadata >
12.4.1 禁用注釋
12.4.2 持久化單元的默認配置
12.5 映射檔案的默認配置
12.5.1 默認包名
12.5.2 默認schema
12.5.3 默認catalog
12.5.4 默認訪問類型
12.6 配置查詢、生成器和查詢結果
12.6.1 sequence生成器
12.6.2 表生成器
12.6.3 命名查詢
12.6.4 本地命名查詢
12.6.5 查詢結果映射
2.7 配置實體
12.7.1 基本配置
12.7.2 配置表
12.7.3 配置從表
12.7.4 配置屬性
12.7.5 配置實體關係
12.8 配置繼承
12.8.1 配置所有實體保存為一個表(SINGLE_TABLE)
12.8.2 每個實體子類保存在一個表(JOINED)
12.8.3 配置非實體類
12.9 配置嵌入類
12.9.1 配置類
12.9.2 和配置嵌入實體類
12.10 配置實體監聽器
12.10.1 監聽器定義在實體內
12.10.2 監聽器定義在實體外
12.10.3 禁用父類監聽器
12.10.4 禁用默認監聽器
12.11 本章小結
第13章 打包和部署
13.1 Java EE套用打包概述
13.1.1 Java EE包的類型
13.1.2 EAR包結構
13.1.3 EJB-JAR包結構
13.1.4 WAR包結構
13.2 Java EE類載入機制
13.2.1 Java類載入器
13.2.2 類載入順序模型
13.2.3 Java EE套用的載入順序
13.2.4 類載入原理示例
13.3  配置persistence.xml
13.3.1 保存位置
13.3.2 persistence.xml的基本結構
13.3.3 配置持久化單元名稱
13.3.4 配置事務類型
13.3.5 配置實現者
13.3.6 配置數據源
13.3.7 配置映射檔案
13.3.8 配置管理類
13.3.9 配置自定義配置
13.4 JPA打包最佳實踐
13.4.1 J2SE打包最佳實踐
13.4.2 J2EE打包最佳實踐——與EJB組件
13.4.3 J2EE打包最佳實踐——與Web套用
13.5 本章小結
第14章 JPA實現框架
14.1 Hibernate JPA
14.1.1 Hibernate 與JPA
14.1.2 Hibernate下載
14.1.3 配置方式
14.1.4 基本配置
14.1.5 配置日誌
14.1.6 配置快取
14.1.7 配置JDBC和資料庫
14.1.8 其他的常用配置
14.2 OpenJPA
14.2.1 OpenJPA與JPA
14.2.2 OpenJPA下載
14.2.3 配置日誌
14.2.4 配置快取
14.2.5 配置JDBC和資料庫
14.2.6 增強器的使用(Enhancer)
14.3 Toplink JPA
14.3.1 Toplink 與JPA
14.3.2 Toplink下載
14.3.3 配置日誌
14.3.4 配置快取
14.3.5 配置JDBC和資料庫
14.3.6 配置DDL
14.3.7 其他自定義配置
14.3.8 配置查詢最佳化
14.3.9 載入最佳化
14.4 本章小結
第15章 JPA與Spring集成
15.1 Spring概述
15.1.1 什麼是Spring
15.1.2 Spring的特性
15.1.3 Spring與JPA
15.2 開始Spring之旅
15.2.1 IoC容器
15.2.2 普通的Bean
15.2.3 容器管理的Bean
15.2.4 在容器中運行
15.3 Spring中集成JPA
15.3.1 集成前的準備
15.3.2 配置EntityManagerFactory
15.3.3 配置事務Transaction
15.3.4 運行程式
15.4 Spring Web框架
15.4.1 Spring Web概述
15.4.2 配置Spring Web套用
15.4.3 開始Spring Web之旅
15.5 Spring Web集成JPA
15.5.1 集成前的準備
15.5.2 配置數據源
15.5.3 注入業務邏輯
15.5.4 運行程式
15.6 本章小結
第四篇 典型案例
第16章 學生成績管理系統(Servlet+JPA)
16.1 系統概述
16.1.1 需求描述
16.1.2 系統預覽
16.2 系統構架
16.2.1 系統結構
16.2.2 CharacterFilter
16.2.3 異常處理
16.3 資料庫設計
16.3.1 數據表UML
16.3.2 SQL腳本
16.4 JPA實體設計
16.4.1 JPA實體UML
16.4.2 JPA實體類代碼
16.4.3 persistence.xml配置
16.4.4 JPA實體的部署
16.5 班級模組
16.5.1 添加頁面addClass.jsp
16.5.2 添加班級
16.5.3 使用標註獲取EntityManagerFactory 380
16.5.4 班級列表
16.5.5 修改班級
16.5.6 刪除班級
16.6 課程模組
16.6.1 添加、刪除、修改課程
16.6.2 選擇聽課學生
16.7 學生模組
16.7.1 分頁顯示學生列表
16.7.2 添加修改刪除學生
16.8 分數模組
16.8.1 添加學生成績
16.8.2 列出學生成績
16.9 本章小結
第17章 寵物商店 (Swing+JPA)
17.1 系統概述
17.1.1 需求描述
17.1.2 系統預覽
17.2 系統構架
17.2.1 系統構架
17.2.2 實體類設計
17.2.3 業務類實現
17.2.4 Session Bean查找
17.2.5 persistence.xml配置
17.2.6 EJB3組件部署
17.3 登錄對話框
17.3.1 登錄對話框
17.3.2 異常信息顯示
17.4 主購物視窗
17.4.1 主購物視窗
17.4.2 主購物視窗代碼
17.4.3 寵物列表Model
17.4.4 添加寵物類別命令
17.4.5 刪除寵物類別命令
17.4.6 添加寵物命令
17.5 購買視窗
17.5.1 購買對話框
17.5.2 購物車對話框
17.5.3 付款操作
17.6 本章小結
第18章 部落格系統(Struts2+ Spring2+JPA)
18.1 系統概述
18.1.1 需求描述
18.1.2 系統預覽
18.2 系統構架
18.2.1 系統構架
18.2.2 執行流程
18.3 實體類設計
18.3.1 基礎實體BaseBean
18.3.2 用戶實體Person
18.3.3 愛好實體Hobby
18.3.4 部落格實體Blog
18.3.5 類別實體Category
18.3.6 文章實體Post
18.3.7 登錄信息類PersonInfo
18.3.8 persistence.xml
18.4 業務模組設計
18.4.1 DAO層接口
18.4.2 DAO層實現
18.4.3 公共Service層接口
18.4.4 公共Service層實現
18.4.5 用戶Service接口
18.5 用戶模組
18.5.1 BaseAction基礎類
18.5.2 用戶註冊
18.5.3 struts.xml配置
18.5.4 ApplicationContext.xml配置
18.5.5 web.xml配置
18.5.6 register.jsp
18.5.7 header.jsp,footer.jsp
18.5.8 註冊表單驗證
18.5.9 異常處理
18.5.10 用戶照片檔案上傳
18.5.11 用戶登錄註銷
18.6 部落格模組
18.6.1 開通部落格
18.6.2 瀏覽部落格
18.7 類別模組
18.7.1 類別列表
18.7.2 添加類別
18.7.3 瀏覽類別
18.8 文章模組
18.8.1 列出文章
18.8.2 添加文章
18.8.3 瀏覽文章
18.9 本章小結
附錄A JPA ORM Annotation參考
附錄B 其他的JPA Annotation參考

相關詞條

相關搜尋

熱門詞條

聯絡我們