EJB3實戰

EJB3實戰

《EJB3實戰》是由(美國)DebuPanda編著,人民郵電出版社於2008年出版發行的書籍。

基本信息

目錄

EJB3實戰

第一部分 EJB概述

第1章 EJB3是什麼 2

1.1 EJB概述 3

1.1.1 EJB作為組件 3

1.1.2 EJB作為框架 4

1.1.3 分層架構和EJB 5

1.1.4 為什麼選擇EJB3 8

1.2 了解EJB類型 9

1.2.1 會話bean 10

1.2.2訊息驅動bean11

1.2.3 實體和JPA11

1.3 深入EJB 12

1.3.1 訪問EJB服務:EJB容器 13

1.3.2 訪問JPA服務:持久化提供器 13

1.3.3 使用EJB服務的功能 14

1.4 EJB的新生 15

1.4.1 HelloUser示例 16

1.4.2 簡化的程式設計模型 17

1.4.3 用註解,不用部署描述檔案 17

1.4.4 依賴注入與JNDI查找 18

1.4.5 簡化的持久化API 18

1.4.6 可進行單元測試的POJO組件 19

1.4.7 EJB3和Spring 20

1.5 小結 21

第2章 EJB3初體驗 22

2.1 新特性:簡化EJB 23

2.1.1 使用註解替換部署描述檔案 23

2.1.2 依賴注入簡介 26

2.2 ActionBazaar應用程式簡介 27

2.2.1 從構造的一個子集開始 27

2.2.2 基於EJB3的解決方案 28

2.3 使用會話bean構造業務邏輯 30

2.3.1 使用無狀態bean 30

2.3.2 無狀態bean客戶端 31

2.3.3 使用有狀態bean 33

2.3.4 有狀態bean客戶端 36

2.4 訊息和訊息驅動bean 38

2.4.1 生成賬單訊息 38

2.4.2 使用訂單賬單訊息處理器MDB41

2.5 使用EJB3JPA持久化數據 42

2.5.1 使用JPA 43

2.5.2 使用EntityManager 45

2.6 小結 47

第二部分 使用EJB3構造業務邏輯

第3章 使用會話bean構造業務邏輯 50

3.1 會話bean簡介 50

3.1.1 為什麼使用會話bean 51

3.1.2 會話bean基礎 52

3.1.3 了解程式設計原則 54

3.1.4 會話狀態和會話bean類型 55

3.1.5 bean生命周期回調 55

3.2 無狀態會話bean 57

3.2.1 BidManagerBean示例 58

3.2.2 使用@stateless註解 60

3.2.3 指定業務接口 61

3.2.4 使用bean生命周期回調 63

3.3 有狀態會話bean 65

3.3.1 附加程式設計原則 66

3.3.2 BidderAccountCreatorBean示例 66

3.3.3 有狀態bean的業務接口 69

3.3.4 有狀態bean的生命周期回調 70

3.4 會話bean客戶端 72

3.4.1 使用@EJB註解 73

3.4.2 注入和有狀態會話bean 74

3.5 有狀態bean的性能注意事項 74

3.5.1 有效地使用有狀態會話bean 74

3.5.2 有狀態會話bean的替代方式 75

3.6 會話bean最佳實踐 76

3.7 小結 76

第4章 訊息和開發MDB 77

4.1 訊息概念 77

4.1.1面向訊息的中間件 78

4.1.2 ActionBazaar中的訊息 78

4.1.3 訊息模型 80

4.2Java訊息服務簡介 81

4.2.1 開發JMS訊息生產者 82

4.2.2 JMS訊息接口 83

4.3 使用訊息驅動bean 85

4.3.1 為什麼使用MDB 85

4.3.2 程式設計原則 86

4.3.3 使用MDB開發訊息消費者 87

4.3.4 使用@MessageDriven註解 89

4.3.5 實現MessageListener 89

4.3.6 使用ActivationConfig-Property 90

4.3.7 使用bean生命周期回調 93

4.3.8 從MDB傳送JMS訊息 95

4.3.9 管理MDB事務 96

4.4 MDB最佳實踐 96

4.5 小結 97

第5章 學習高級EJB概念 99

5.1 EJB內幕 99

5.1.1 幕後的EJB 99

5.1.2 EJB上下文:訪問運行時環境 100

5.2 使用依賴注入和JNDI訪問資源 103

5.2.1 使用@Resource注入資源 103

5.2.2 @Resource註解實際套用 107

5.2.3 查找資源和EJB 109

5.3 EJB中的AOP:攔截器 110

5.3.1 AOP是什麼 111

5.3.2 攔截器是什麼 111

5.3.3 指定攔截器 113

5.3.4 實現業務攔截器 114

5.3.5 攔截器類中的回調方法 117

5.4 調度:EJB3計時器服務 118

5.4.1 計時器是什麼 118

5.4.2 使用計時器服務 119

5.4.3 何時使用EJB計時器 123

5.5 小結 124

第6章 事務和安全 125

6.1 了解事務 125

6.1.1 ActionBazaar中的事務解決方案 126

6.1.2 ACID屬性 126

6.1.3 事務管理內幕 128

6.1.4 兩階段提交 129

6.1.5 EJB中的事務管理 130

6.2 容器管理的事務 130

6.2.1 使用CMT實現Snag-It訂購 130

6.2.2 @TransactionManagement註解 131

6.2.3 @TransactionAttribute註解 132

6.2.4 使CMT使用回調 134

6.2.5 事務和異常處理 135

6.3 bean管理的事務 138

6.3.1 使用BMT實現Snag-It訂購 138

6.3.2 獲得UserTransaction 139

6.3.3 使用UserTransaction 140

6.3.4 BMT的優缺點 141

6.4 分析EJB安全 142

6.4.1 驗證和授權 142

6.4.2 用戶、組和角色 142

6.4.3 ActionBazaar中的安全問題 143

6.4.4 EJB3和JavaEE安全 144

6.4.5 聲明式安全 146

6.4.6 使用EJB程式式安全 148

6.5 小結 150

第三部分 研究JPA

第7章 實現域模型 152

7.1 域建模和JPA 152

7.1.1 介紹域模型 153

7.1.2 ActionBazaar問題域 153

7.1.3 域模型參與者 155

7.1.4 EJB3Java持久化API 156

7.1.5 域對象作為Java類 157

7.2 使用JPA實現域對象 159

7.2.1 @Entity註解 159

7.2.2 持久化實體數據 160

7.2.3 指定實體身份 163

7.2.4 @Embeddable註解 167

7.3 實體關係 168

7.3.1 @OneToOne 168

7.3.2 @OneToMany和@ManyToOne 171

7.3.3 @ManyToMany 173

7.4 小結 175

第8章對象關係映射176

8.1 阻抗失配 176

8.1.1 把對象映射到資料庫 177

8.1.2 介紹O/R映射 180

8.2 映射實體 181

8.2.1 指定表 183

8.2.2 映射列 184

8.2.3 使用@Enumerated 185

8.2.4 映射CLOB和BLOB 186

8.2.5 映射臨時類型 186

8.2.6 把實體映射到多個表 187

8.2.7 生成主鍵 188

8.2.8 映射可嵌入類 190

8.3 映射實體關係 192

8.3.1 映射一對一關係 193

8.3.2 一對多和多對一 196

8.3.3 多對多 198

8.4 映射繼承 200

8.4.1 單表策略 201

8.4.2 聯結表策略 202

8.4.3 每個類一個表策略 204

8.4.4 映射多態關係 206

8.5 小結 206

第9章 使用EntityManager操作實體 207

9.1 介紹EntityManager 207

9.1.1 EntityManager接口 208

9.1.2 實體的生命周期 210

9.1.3 持久化上下文、作用域和EntityManager 212

9.1.4 在ActionBazaar中使用EntityManager 213

9.2 創建EntityManager實例 215

9.2.1 容器管理的EntityManager 215

9.2.2 應用程式管理的EntityManager 217

9.3 管理持久化操作 222

9.3.1 持久化實體 222

9.3.2 通過主鍵檢索實體 226

9.3.3 更新實體 230

9.3.4 刪除實體 232

9.3.5 通過轉儲清除控制更新 233

9.3.6 刷新實體 234

9.4 實體生命周期監聽器 236

9.4.1 使用實體監聽器 236

9.4.2 默認監聽器類 238

9.4.3 監聽器類的執行順序和排除 238

9.5 實體操作最佳實踐 239

9.6 小結 240

第10章 使用查詢API和JPQL檢索實體 241

10.1 介紹查詢API 241

10.1.1 背景 241

10.1.2 剖析查詢 242

10.1.3 定義命名查詢 243

10.2 執行查詢 244

10.2.1 創建查詢實例 244

10.2.2 使用Query接口 246

10.2.3 指定查詢提示 250

10.3 介紹JPQL 251

10.3.1 定義語句類型 251

10.3.2 使用FROM子句 253

10.3.3 條件表達式和操作 256

10.3.4 使用JPQL函式 259

10.3.5 使用SELECT子句 261

10.3.6 使用聚合 263

10.3.7 排序查詢結果 264

10.3.8 使用子查詢 265

10.3.9 聯結實體 266

10.3.10 批更新和批刪除 268

10.4 原生SQL查詢 268

10.4.1 使用原生SQL的動態查詢 269

10.4.2 使用命名原生SQL查詢 270

10.5 小結 271

第四部分 EJB3的實際套用

第11章 打包EJB3應用程式 274

11.1 給應用程式打包 275

11.1.1 剖析EAR檔案 276

11.1.2 載入EAR模組 277

11.2 分析類載入 279

11.2.1 類載入基礎 279

11.2.2 分析典型的父委託模型 281

11.2.3 JavaEE應用程式中的類載入 282

11.2.4 JavaEE模組之間的相關性 282

11.3 打包會話bean和訊息驅動bean 284

11.3.1 打包EJB-JAR 284

11.3.2 部署描述檔案與註解 285

11.3.3 使用部署描述檔案覆寫註解 288

11.3.4 指定默認攔截器設定 289

11.3.5 使用廠商專有的註解和描述檔案 289

11.4 打包實體 290

11.4.1 暴露持久化模組 291

11.4.2 使用persistence.xml描述持久化模組 291

11.4.3 使用orm.xml執行O/R映射 296

11.5 最佳實踐和常見部署問題 299

11.5.1 打包和部署最佳實踐 299

11.5.2 診斷常見部署問題 300

11.6 小結 301

第12章 有效地跨越應用程式層集成EJB3

12.1 設計模式和Web技術 302

12.1.1 表現層 303

12.1.2 使用EAO模式 305

12.1.3 介紹SessionFacade模式 308

12.2 從Web層訪問會話bean 312

12.2.1 使用依賴注入訪問會話bean 313

12.2.2 從幫助器類引用會話bean 314

12.2.3 處理事務 316

12.2.4 處理有狀態會話bean 317

12.3 從Web層使用JPA 318

12.3.1 使用容器管理的實體管理器 318

12.3.2 通過JTA事務使用應用程式管理的EntityManager 320

12.3.3 在容器外訪問應用程式管理的EntityManager 321

12.4 小結 323

第13章 馴服EJB:性能和可伸縮性 324

13.1 處理實體鎖定問題 325

13.1.1 了解鎖定類型 325

13.1.2樂觀鎖定和實體版本 327

13.1.3 EntityManager和鎖定模式 328

13.2 提高實體性能 330

13.2.1 重新建模和重新設計計畫 330

13.2.2 最佳化JDBC層 333

13.2.3 減少資料庫操作 334

13.2.4 提高查詢性能 337

13.2.5 快取 340

13.3 提高EJB3組件的性能 344

13.3.1 會話bean性能 344

13.3.2 提高MDB性能 346

13.4 集群EJB應用程式 347

13.4.1 協同定位架構 348

13.4.2 無狀態會話bean的負載平衡 348

13.4.3 集群有狀態會話bean 350

13.4.4 實體和集群快取 352

13.5 小結 353

第五部分 移植和互操作性

第14章 移植到EJB3 356

14.1 與EJB2的向後兼容性和互操作性 356

14.1.1 將EJB2和EJB3打包在一起 357

14.1.2 從EJB3調用EJB2 357

14.1.3 從EJB2使用EJB3 358

14.2 移植會話bean 360

14.2.1 轉換接口和bean類 360

14.2.2 資源使用 363

14.2.3 事務和安全設定 364

14.2.4 客戶端應用程式 364

14.3 移植訊息驅動bean 365

14.4 把CMP2實體移植到EJB3JPA 366

14.4.1 重新設計域模型 366

14.4.2DTO用作實體 369

14.4.3 實體bean類和接口 370

14.4.4 客戶端應用程式 376

14.5 移植JDBCDAO使用EJB3JPA 377

14.5.1 標識實體 378

14.5.2 重新構造DAO實現類使用EntityManagerAPI 379

14.5.3 SQL查詢轉換為JPQL 380

14.6 幫助O/R框架使用EJB3JPA 381

14.7 移植方法 382

14.7.1 策略 383

14.7.2 手工與自動 383

14.8 小結 383

第15章 把EJB暴露為Web服務 384

15.1 Web服務是什麼 385

15.1.1 認識Web服務組件 386

15.1.2 Web服務樣式 391

15.1.3 開發Web服務的方法 391

15.2 JAX-WS:JavaEE5Web服務平台 392

15.2.1 介紹Web服務平台 392

15.2.2 與POJO相比,為什麼選擇EJB用於Web服務 393

15.3 使用JAX-WS2.0開發EJBWeb服務 393

15.3.1 使用@WebService註解 395

15.3.2 使用@SOAPBinding指定Web服務樣式 396

15.3.3 使用@WebMethod註解 397

15.3.4 使用@WebParam註解 399

15.3.5 使用@WebResult註解 400

15.3.6 使用@oneway和@HandlerChain註解 400

15.4 從EJB訪問Web服務 401

15.4.1 訪問PlaceBidWeb服務 401

15.4.2 EJB作為Web服務客戶 403

15.5 Web服務開發的最佳實踐 404

15.6 小結 405

第16章 EJB3和Spring 406

16.1 Spring框架簡介 407

16.1.1 Spring框架的優勢 407

16.1.2 控制反轉原理 408

16.1.3 關注分離原理 408

16.2 通過Spring使用JPA 409

16.2.1 構造Spring的JPAEAO 410

16.2.2 配置Spring使用JPA 412

16.3 結合EJB3和Spring的功能 415

16.3.1 開發支持Spring的EJB 415

16.3.2 從Springbean使用會話bean 417

16.4 小結 418

附錄A RMI和JNDI 420

附錄B 複習關係資料庫 426

附錄C 註解參考 431

附錄D 部署描述檔案參考 447

附錄E 安裝和配置JavaEE5SDK 462

資源 472

索引 475

……

相關詞條

相關搜尋

熱門詞條

聯絡我們