JavaBeans、EJB和POJO詳解

J2EE能夠說指Java在數據庫信息系統上實現,數據庫信息系統從早期的dBase、到Delphi/VB等C/S結構,發展到B/S(Browser瀏覽器/Server服務器)結構,而J2EE主要是指B/S結構的實現。web

J2EE又是一種框架,框架相似API、庫的概念,可是要超出它們。假如須要具體瞭解框架,可先從設計模式開始學習。J2EE是一個虛的大的概念,J2EE標準主要有三種子技術標準:WEB技術、EJB技術和JMS,談到J2EE應該說最終要落實到這三個子概念上。數據庫

這三個技術的每一個技術在應用時都涉及到兩個部分:容器部分,應用部分。web容器也是指jsp/servlet容器,你假如要開發一個Web應用,不管是編譯或運行,都必需要有Jsp/Servlet庫或API支持(除了JDK/J2SE之外)。  編程

Web技術中除了Jsp/Servlet技術外,還須要JavaBeans或Java Class實現一些功能或者包裝攜帶數據,因此Web技術最初裸體簡稱爲Jsp/Servlet JavaBeans系統。  設計模式

談到JavaBeans技術,就涉及到組件構件技術(component),這是Java的核心基礎部分,不少軟件設計概念(設計模式)都是經過JavaBeans實現的。 瀏覽器

JavaBeans不屬於J2EE概念範疇中,假如一個JavaBeans對象被Web技術(也就是Jsp/Servlet)調用,那麼JavaBeans就運行在J2EE的Web容器中;假如它被EJB調用,它就運行在EJB容器中。  tomcat

EJB(企業JavaBeans)是普通JavaBeans的一種提高和規範,由於企業信息系統開發中須要一個可伸縮的性能和事務、安全機制,這樣能保證企業系統平滑發展,而不是發展到一種規模從新更新一套軟件系統。安全

至此,JavaBeans組件發展到EJB後,並非說之前的那種JavaBeans形式就消失了,這就天然的造成了兩種JavaBeans技術:EJB,POJO,pojo和EJB是兩個徹底不一樣的概念,它是指普通的JavaBeans,而這個JavaBean不依附某種框架,或者乾脆來講,這個JavaBeans是你爲這個應用程序單獨開發建立的。服務器

J2EE應用系統開發工具備不少,如JBuilder,Eclipse等,這些IDE首先是Java開發工具,也就說說,它們首要基本功能是能夠開發JavaBeans或JavaClass,可是假如要開發出J2EE系統,就要落實到Web技術和EJB技術,那麼就有可能要一些專門的模塊功能(如eclipse須要lomboz插件),最重要的是,由於J2EE系統區分爲容器和應用兩個部分,因此,在任何開發工具中開發J2EE都須要指定j2ee容器。網絡

J2EE容器分爲WEB容器和EJB容器,Tomcat/Resin是web容器,JBOSS是EJB容器,其中Web容器直接使用tomcat實現的,因此你開發的Web應用程序能夠在上面的兩種容器運行,而你開發的Web EJB應用則只能夠在JBoss服務器上運行商業產品WebSphere、Weblogic等和JBoss屬於同一種性質,都是應用服務器。架構

J2EE容器也稱爲J2EE服務器,大部分時候他們概念是一致的.

假如你的j2ee應用系統的數據庫鏈接時經過JNDI得到,也就是說從容器中得到,那麼你的J2EE應用系統基本與數據庫無關,假如你在你的J2EE應用系統中耦合了數據庫鏈接JDBC驅動的配置,那麼的J2EE應用系統就有數據庫概念彩色,做爲一個成熟須要推廣的J2EE應用系統,不推薦和具體數據庫耦合,固然這其中如何保證J2EE應用系統運行性能又是體現你的設計水平了。

衡量J2EE應用系統設計開發水平高低的標註就是:解耦性,你的應用系統各個功能是否完全脫離,是否不相互依靠,也只有這樣, 才能體現可維護性,可拓展性的軟件設計目標。

爲了達到這個目的,誕生了各類框架概念,J2EE框架標準將一個系統劃分爲Web和EJB主要成分,固然咱們有時不是以這個具體區分,而是從設計上抽象爲表現層,服務層,和持久層,這三個層次從一個高度將J2EE分離開來,實現解耦。

所以,咱們實際編程中,也要講本身的功能向這三個層次上靠,作到大方向清楚,涇渭分明,可是沒有技術上約束限制要作到這點不是很容易,所以咱們仍是要藉助j2ee具體技術實現,這時候,你可使用EJB規範實現服務層和持久層,web技術實現表現層;

EJB爲何能將服務層從jsp/servlet手中分離出來, 由於它對JavaBeans編碼有強制的約束,如今有一種對JavaBeans的弱約束,使用IOC模式實現的,在IOC模式誕生以前,通常都是經過工廠模式來對JavaBeans約束,形層一個服務層,這也是JIve這樣開源論壇設計原理之一

由此,將服務層從表現層中分離出來如今有兩種可選架構選擇:治理普通JavaBeans(POJO)框架(如Spring、JdonFramework)以及治理EJB的EJB框架,由於EJB不僅是框架,仍是標準,而標準能夠擴展發展,因此,這兩種區別未來是可能模糊,被歸入同一個標準了。 可是,我的認爲:標準制定是爲某個目的服務的,總要犧牲一些換取另一些,因此,這兩種架構會長時間並存。  

這兩種架構分歧也曾經誕生一個新名詞:徹底POJO的系統也稱爲輕量級系統(lightweight),其實這個名詞自己就沒有一個嚴格定義,更可能是一個吸引人的招牌,輕量是指輕易學習輕易使用嗎?按照這個定義,其實輕量Spring等系統並不輕易學習;並且EJB 3.0(依然叫EJB)之後的系統是否可稱爲輕量級了呢?  

前面談了服務層框架,使用服務層框架能夠將JavaBeans從Jsp/Servlet中分離出來,而使用表現層框架則能夠將Jsp中剩餘的JavaBeans徹底分離,這部分JavaBeans主要負責顯示相關,通常是經過標籤庫(taglib)實現,不一樣框架有不一樣本身的標籤庫,Struts是應用比較普遍的一種表現層框架。

這樣,表現層和服務層的分離是經過兩種框架達到目的,剩餘的就是持久層框架了,經過持久層的框架將數據庫存儲從服務層中分離出來是其目的,持久層框架有兩種方向:直接本身編寫JDBC等SQL語句(如iBatis);使用O/R Mapping技術實現的Hibernate和JDO技術;固然還有EJB中的實體Bean技術。  

持久層框架如今呈現百花齊放,各有優缺點的現狀,因此正如表現層框架同樣,如今沒有一個框架被指定爲標準框架,固然,表現層框架如今又出來了一個JSF,它表明的頁面組件概念是一個新的發展方向,可是複雜的實現讓人有些忘而卻步。   
在全部這些J2EE技術中,雖然SUN公司發揮了很大的做用,不過整體來講:網絡上有這樣一個評價:SUN的理論天下無敵;SUN的產品用起來撞牆;對於初學者,非凡是那些試圖經過或已經經過SUN認證的初學者,趕忙擺脫SUN的陰影,當即開溜,使用開源領域的產品來實現本身的應用系統。  

最後,你的J2EE應用系統假如採起上面提到的表現層、服務層和持久層的框架實現,基本你也能夠在無需深入把握設計模式的狀況下開發出一個高質量的應用系統了。  

還要注重的是: 開發出一個高質量的J2EE系統還須要正確的業務需求理解,那麼域建模提供了一種比較切實可行的正確理解業務需求的方法,相關具體知識可從UML角度結合理解。  固然,假如你想設計本身的行業框架,那麼第一步從設計模式開始吧,由於設計模式提供你一個實現JavaBeans或類之間解耦參考實現方法,當你學會了系統基本單元JavaBean或類之間解耦時,那麼系統模塊之間的解耦你就可能把握,進而你就能夠實現行業框架的提煉了,這又是另一個發展方向了。  以上理念能夠總結爲一句話:  J2EE開發三件寶: Domain Model(域建模)、patterns(模式)和framework(框架)。

相關文章
相關標籤/搜索