1. 程式人生 > >帶你走進EJB--它都有哪些Bean

帶你走進EJB--它都有哪些Bean

通過前面一系列EJB的部落格,我們已經對EJB有了一個巨集觀的瞭解.為夠更好的在企業專案中使用EJB,我們很有必要對EJB的一些基本內容進行深入,這次我們主要進行的主題是Enterprise Java Bean 中都有哪些Bean?

EJB中主要有以下三種類型的Bean,分別是

  • Session Beans
  • Message-Driven Beans
  • Entities Beans

每種型別的Bean都能夠提供特定型別的服務.這三種分類能夠幫助我們更好的去理解並組織一個應用程式.例如,Bean的這些型別能夠讓我們基於分層的架構來開發應用.

         Session Beans Message-Driven Beans(MDBs)

用來建立業務邏輯,它們是由EJB容器來管理生命週期.Entities Beans是資料持久化的模型.跟容器一樣,Entities Beans是通過Persistence provider(永續性提供者)來進行管理的.

接下來我們通過一張圖來總結上面所闡述的內容.同時也是對EJB型別的一個概括.

計算機生成了可選文字:ManagedbytheCOntain6rEJB3士SeSSionbeanMessage一drivenbeanJPAEntityManagedbytheEntityManagerlpersistenceprovider

這裡需要注意的是Java Persistence API EJB3 的容器是完全分開的.

SessionBeans

一個會話Bean例項是客戶端呼叫一個特定業務操作的結果,比如檢查客戶的訪問歷史.共有兩種型別的Session Beans,有狀態的會話Bean和無狀態的會話Bean.

有狀態的

SessionBean只為一個使用者來服務,並且能夠自動記錄使用者的狀態同時你也不需要去寫額外的程式碼.一個簡單的例子就是你在淘寶購物所用的購物車的過程.

無狀態的SessionBean是不會儲存的資訊的和狀態,無狀態的SessionBean是可以重用的,它不會被立刻銷燬.一個簡單的例子就是你在淘寶購物所用到的查詢購物記錄的過程.

         Session Beans可以通過JavaRMI來進行本地或者遠端呼叫.無狀態的會話Bean還可以釋出成Web Service.

有狀態的Beans和無狀態的Beans有什麼區別呢?

這兩種Session Bean都可以將系統邏輯放在方法之中執行,

不同的是 Stateful Session Bean 可以記錄呼叫者的狀態,因此一個使用者會有自己的一個例項。

 Stateless Session Bean 雖然也是邏輯元件,但是他卻不負責記錄使用者狀態,也就是說當使用者呼叫 Stateless Session Bean 的時候,EJB  容器並不會尋找特定的 Stateless Session Bean 的實體來執行這個method換言之,很可能數個使用者在執行某個 Stateless Session Bean methods 時,會是同一個 Bean的例項在執行。

從記憶體方面來看,Stateful Session Bean StatelessSession Bean 比較,Stateful Session Bean 會消耗 J2EE Server 較多的記憶體,然而 Stateful Session Bean 的優勢卻在於他可以維持使用者的狀態。

Message-DrivenBeans

Message-Driven Beans (MDBs)Session Bean一樣,都是用來處理業務邏輯.但是MDBs非常不同於Session Beans是客戶端不會直接呼叫MDB的方法.MDB會被髮到訊息服務的訊息所觸發,它能夠在不同的系統元件之間進行非同步訊息傳輸.有很多的訊息服務例如:IBMWebSphere MQ, SonicMQ, OracleAdvanced Queueing, and TIBCO.MDB的一個簡單例子是在淘寶中你請求查詢相關寶貝的物流資訊.

Entities

        Entities是能夠持久化到資料庫的那些java物件.EJB3 其中一個新特徵就是能夠處理持久化,關於什麼是持久化可以參考我的部落格:Hibernate 之 PersistenceEJB的持久化是通過JPA來進行管理的.它能夠自動的將Java物件通過ORM技術持久化.

至此,我們已經對EJB各個組成部分有了深一步的瞭解,知道在EJB中都有哪些Bean和他們基本的功能.