EJB概述
?
? ? EJB含義為企業Java Beans。EJB是J2EE平臺的重要組成部分。開發者可以在J2EE平臺使用基于組件的體系結構,該結構目的為企業級應用程序提供多層、分布式和高度事務性等特性。
? ? EJB提供了一種開發和部署基于組件的企業應用程序的體系結構,考慮到健壯性、高可伸縮性和高性能。EJB應用程序可以部署在任何符合J2EE 1.3標準規范的應用服務器上。
? ? 在本博客系列中,我們將詳細討論EJB3.0。
一、分類
? ? EJB主要分為三類;下表列出了它們的名稱和簡要說明–
? ? EJB 依照特性的不同,目前區分為三種,分別是 Session Bean ,Entity Bean ,以及 Message Driven Bean 。其中 Session Bean 與Entity Bean 算是 EJB 的始祖,這兩種 EJB 在 EJB 規格 1.x 的時候就已經存在了,而 Message Driven Bean 則出現在 EJB 2.0 的規格中。
| 類型 | 描述 |
| Session Bean | 會話bean為單個會話存儲特定用戶的數據。它可以是有狀態的或無狀態的。與實體bean相比,它的資源密集度更低。一旦用戶會話終止,會話bean就會被銷毀。 |
| Entity Bean | 實體bean表示持久數據存儲。用戶數據可以通過實體bean將數據保存到數據庫中,也可以通過實體bean對數據庫檢索。 |
| Message Driven Bea | 消息驅動bean用于JMS(Java消息傳遞服務)環境中。消息驅動bean可以使用來自外部實體的JMS消息并依次執行。 |
? ?(一)Session Bean?
? ? Session Bean 主要的目的是讓程序開發者將邏輯層抽離,特別是復雜的邏輯可以放在 Session Bean 中。 Session Bean 還可以再細分為Stateful Session Bean 與 Stateless Session Bean ,這兩種的 Session Bean都可以將系統邏輯放在 method 之中執行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態,因此通常來說,一個使用者會有一個相對應的 Stateful Session Bean 的實體 (Instance 注一 ) ,換言之,當使用者呼叫某個 Stateful Session Bean 的兩個 methods 的時候,EJB Container( 注一 ) 會清楚的知道某個 EJB 的實體屬于某一個使用者的。因此一般的設計上,不會讓兩個使用者同時使用某個 Stateful Session Bean ( 這并不是表示兩個使用者不能使用同一個 Stateful Session Bean) 。
? ? Stateless Session Bean 雖然也是邏輯組件,但是他卻不負責記錄使用者狀態,也就是說當使用者呼叫 Stateless Session Bean 的時候,EJB Container 并不會找尋特定的 Stateless Session Bean 的實體來執行這個 method ,換言之,很可能數個使用者在執行某個 Stateless Session Bean 的 methods 時,會是同一個 Bean 的 Instance 在執行。
? ? 從內存方面來看, Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會消耗 J2EE Server 較多的內存,然而 Stateful Session Bean 的優勢卻在于他可以維持使用者的狀態。
? ? (二)Entity Bean
? ? ?Entity Bean 主要是資料組件, Entity Bean 主要的目的,在于提供資料,也就是說程序設計師可以將 Entity Bean 當程序資料,至于 Entity Bean 實際上怎么存取實際上的數據庫,那個則是另外一件事情。
? ? Entity Bean 實際上是針對 RDBMS 而設計,也就是說當其它的程序使用 Entity Bean 的時候, Entity Bean 的資料主要是從 RDBMS 而來,當然,如果程序設計師熟悉 Entity Bean 的運作,那么也可以很輕易的把RDBMS 用其它的數據庫取代,像是 LDAP 。
? ? Entity Bean 主要區分為 Bean-Managed Persistence 以及 Container-Managed Persistence ( 簡稱 BMP 及 CMP) ,這兩種 Entity Bean 的型態不同,但是目的相同,都在于提供資料!這兩種 Entity Bean 主要的差別在于維護資料的角色, BMP 是由 Bean 自行維護資料的一致性,而 CMP 則是由 EJB Container 來維護。一個 Entity Bean 往往代表一張RDBMS 的表格,這個表格內的一筆一筆的資料,則是透過另外一個叫做 Primary Key( 注三 ) 的 Class 來加以區分。
? (三)Message Driven Bean
? ? ?Message Driven Bean 與 Session Bean 或是 Entity Bean 均不相同,一般 Session Bean 或是 Entity Bean 都可以讓使用者主動觸發(可以在需要的時候,呼叫他們的 method 來觸發他們),但是 Message Driven Bean 主要的目的在于反應 Message Queue 中的事件。
?
二、EJB的優點
? ? 以下是EJB的重要優點-
? ? 1 簡化了大型企業級應用程序的開發。
? ? 2 Application Server/EJB容器提供了大多數系統級服務,如事務處理、日志記錄、負載平衡、持久性機制、異常處理等。開發人員只需關注應用程序的業務邏輯。
? ? 3 EJB容器管理EJB實例的生命周期,因此開發人員不必擔心何時創建/刪除EJB對象。
參考:https://www.iteye.com/blog/jessicacao-257289
? ? ? ? ? ?https://www.tutorialspoint.com/ejb/ejb_overview.htm
?
?
?
總結
- 上一篇: BeanUtils.copyProper
- 下一篇: 这个截图神器,能轻松碾压QQ和微信。。。