回 OPENHOME 首頁
語言技術: EJB3 Gossip
EJB3 相較於過去的 EJB2 在設定上確實大幅簡化,容器管理資源注入有其方便性,資源整合度高,為標準方案亦為其優勢所在。
學習 EJB 還是得有 IDE 比較方便,使用 NetBeans + Glassfish 來學習 EJB3 是個不錯的組合,而這邊的文件以 Annotation 設定為範例進行方式,至於 XML 的設定細節,可以參考 O'reilly 的
Enterprise JavaBeans, 3.0 By Bill Burke
,
Richard Monson-Haefel
。
Bean 入門
先來寫幾個簡單的範例,看看 Session Bean、Message-Driven Bean 長什麼樣子,怎麼封裝 EJB-JAR、EAR 等。
Session Bean
在 EJB3 中寫 Session,簡單的由 Annotation 就可以設定了,並可以利用容器的資源注入來簡化程式撰寫。
第一個 Session Bean(單機客戶端)
使用 @EJB 注入 Bean(單機客戶端)
第一個 Session Bean(Servlet 客戶端)
使用 @EJB 注入 Bean(Servlet 客戶端)
@Remote 與 @Local
使用 Stateful Session Bean
Message-Driven Bean
就是受容器管理的 MessageListener,所以先了解一下 Java Message Service,再來寫個簡單的 Message-Driven Bean。
訊息(Message)觀念
簡 介 Java Message Service
第一個 Message-Driven Bean
封裝應用程式
雖然用 IDE 很方便,但了解一下如何自行封裝 EJB-JAR、EAR 也不錯。
封裝 EJB-JAR
封裝 EAR
EAR 模組及類別載入
Bean 進階
了解基本的 Session Bean 與 Message-Driven Bean 撰寫方式,接下來看一些生命週期、攔截器、Timer 等服務。
生命週期
來看看 Session Bean 與 Message-Driven Bean 的生命週期與回呼方法。
Stateless Session Bean 生命週期
Stateful Session Bean 生命週期
Message-Driven Bean 生命週期
攔截器(Interceptor)
攔截器可以介入方 法呼叫前後,或是作生命週期回呼,可作一些與商務邏輯無關的額外服務。
Bean 中的攔截器
攔截器類別
生命週期回呼攔截器
InvocationContext
編寫規則
一些瑣瑣碎碎的編 寫規則。
Session Bean 編寫規則
Message-Driven Bean 編寫規則
攔截器編寫規則
使用 Timer 服務
Timer 服務是由容器所提供的服務,適用於Stateless Session Bean 與 Message-Driven Bean。
簡介 Timer 服務
TimerService 與 Timer 回呼
交易(Transaction)
看是要使用 CMT 或 BMT 都可以。。XD
簡介交易
簡介交易區間(Transaction Demarcation)
使用 CMT(Container-Managed Transaction)
使用 BMT(Bean-Managed Transaction)
安全
驗證(Authentication)交給容器,授權(Authorization)可以用宣告式(Declarative)或編程式(Programmatic)。
簡介 Java EE 安全
宣告式安全
編程式安全
例外處理
簡介 Java EE 例外處理
Java EE 例外路徑
Java Persistence API
JPA 定義於 JSR 220,您可以在 Java EE 容器中使用 JPA,也可以在非容器環境中使用 JPA。
基本配置
來看看如何於單機與容器環境中使用 JPA。
第一個 JPA(單機客戶端)
第一個 JPA(容器管理)
在 Servlet 中直接使用 JPA
部署
JPA
EntityManager 與 Entity
瞭解一下 EntityManager 的作用,從中學習到 Entity 的生命週期與 EntityManager 範圍。
使用 EntityManager
Entity 生命週期
EntityManager 範圍
進階配置
來了解一下 JPA 的 API 幾個進階的觀念與使用。
Persistence Context
Entity 生命週期傾聽器
Lock 機制
Java Persistence Query Language
JPQL是種中介的查詢語言,語法與 SQL 類似,JPA 的實作會將 JPQL 轉譯為資料庫原生的 SQL。
使用 Query 物件
Named Query 與 Navite Query
JPQL 語法簡介
Object-Relational Mapping
學習 JPA,大部份的時間都在瞭解如何實現映射,而從中您也可以瞭解到不少關聯式資料庫的表格設計方式。
實體映射
來看看一些進階的實體映射議題。
Embeddable 物件
複合主鍵(一)
複合主鍵(二)
Lob 物件
多表映射
繼承映射
在物件導向設計中,繼承關係是很常見的,繼承關係至表格的設計上有幾種方式。
Table per Concrete Class
Single Table per Class Hierarchy
Table per Subclass(Joined-Tables)
Nonentity Base Class
關聯映射
來看看多對一、一對多、一對一、多對多如何在 Java 物件及表格之間進行映射。
一對一(外鍵關聯)
一對一(共享主鍵)
多對一
一對多
多對多
雙向關聯
CascadeType 與 FetchType
參考書籍、文件
Manning, EJB 3 in Action, By Debu Panda, Reza Rahman, Derek Lane
O'reilly, Enterprise JavaBeans, 3.0 By Bill Burke
,
Richard Monson-Haefel
low level programmer, EJB3
The Java Persistence Query Language
OpenEJB
JPA 2 Criteria API Tutorial