# Java系列之EJB
## 簡介
EJB是sun的JavaEE服務器端組件模型,設計目標與核心應用是部署分布式應用程序。憑借java跨平臺的優勢,用EJB技術部署的分布式系統可以不限于特定的平臺。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定義了一個用于開發基于組件的企業多重應用程序的標準。其特點包括網絡服務支持和核心開發工具(SDK)。 在J2EE里,Enterprise Java Beans(EJB)稱為Java 企業Bean,是Java的核心代碼,分別是會話Bean(Session Bean),實體Bean(Entity Bean)和消息驅動Bean(MessageDriven Bean)。
##會話Bean
SessionBean用于實現業務邏輯,它可以是有狀態的,也可以是無狀態的。每當客戶端請求時,容器就會選擇一個SessionBean來為客戶端服務。Session Bean可以直接訪問數據庫,但更多時候,它會通過Entity Bean實現數據訪問。
## 實體Bean
Entity Bean是域模型對象,用于實現O/R映射,負責將數據庫中的表記錄映射為內存中的Entity對象,事實上,創建一個Entity Bean對象相當于新建一條記錄,刪除一個Entity Bean會同時從數據庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態和數據庫同步。
## 消息驅動Bean
是EJB2.0中引入的新的企業Bean,它基于JMS消息,只能接收客戶端發送的JMS消息然后處理。MDB實際上是一個異步的無狀態SessionBean,客戶端調用MDB后無需等待,立刻返回,MDB將異步處理客戶請求。這適合于需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間的等待一個方法調用直到返回結果。
EJB實際上是SUN的J2EE中的一套規范,并且規定了一系列的API用來實現把EJB概念轉換成EJB產品。EJB是BEANS,BEANS是什么概念?那就是得有一個容納她,讓她可勁造騰的地方,就是得有容器。EJB必須生存在EJB容器中,這個容器可是功能強大之極!她首先要包裝你BEAN,。EJB的客戶程序實際上從來就不和你編寫的EJB直接打交道,他們之間是通過HOME/REMOTE接口來發生關系的。它負責你的BEAN的所有的吃喝拉撒睡,比如BEAN的持續化,安全性,事務管理。
個人對于EJB也不是很理解,只是做一些知識點的梳理,后面加深理解后再跟大家分享經驗……