JavaBean是壹種組件技術,就好像妳做了壹個扳子,而這個扳子會在很多地方被拿去用,這個扳子也提供多種功能(妳可以拿這個扳子扳、錘、撬等等),而這個扳子就是壹個組件。
壹般在web應用程序中建立壹個數據庫的映射對象時,我們只能稱它為POJO。
POJO(Plain Old Java Object)這個名字用來強調它是壹個普通java對象,而不是壹個特殊的對象。2005年11月時,“POJO”主要用來指代那些沒用遵從特定的Java對象模型,約定或框架如EJB的Java對象.理想地講,壹個POJO是壹個不受任何限制的Java對象(除了Java語言規範)。例如壹個POJO不應該是
擴展預定的類,如 public class Foo extends javax.servlet.http.HttpServlet { ...
實現預定的接口,如 public class Bar implements javax.ejb.EntityBean { ...
包含預定的標註,如 @javax.ejb.Entity public class Baz{ ...
然後,因為技術上的困難及其他原因,許多兼容POJO風格的軟件產品或框架事實上仍然要求使用預定的標註,譬如用於更方便的持久化。 JavaBean 是壹種JAVA語言寫成的可重用組件。它的方法命名,構造及行為必須符合特定的約定:
這個類必須有壹個公***的缺省構造函數。
這個類的屬性使用getter和setter來訪問,其他方法遵從標準命名規範。
這個類應是可序列化的。
因為這些要求主要是靠約定而不是靠實現接口,所以許多開發者把JavaBean看作遵從特定命名約定的POJO。 簡而言之,當壹個Pojo可序列化,有壹個無參的構造函數,使用getter和setter方法來訪問屬性時,他就是壹個JavaBean。
1.對於java bean,就是壹個java模型組件,他為使用java類提供了壹種標準的格式,在用戶程序和可視化管理工具中可以自動獲得這種具有標準格式的類的信息,並能夠創建和管理這些類。 java bean 可以使應用程序更加面向對象,可以把數據封裝起來,把應用的業務邏輯和顯示邏輯分離開,降低了開發的復雜程度和維護成本! JavaBean 是壹種JAVA語言寫成的可重用組件。為寫成JavaBean,類必須是具體的和公***的,並且具有無參數的構造器。JavaBeans 通過提供符合壹致性設計模式的公***方法將內部域暴露稱為屬性。眾所周知,屬性名稱符合這種模式,其他Java 類可以通過自省機制發現和操作這些JavaBean 屬性。
從編程的角度,也就是最基本的實現了get跟set方法的類。
2.Enterprise Bean,也就是Enterprise JavaBean(EJB),是J2EE的壹部分,定義了壹個用於開發基於組件的企業多重應用程序的標準。其特點包括網絡服務支持和核心開發工具(SDK)。 在 J2EE裏,Enterprise Java Beans(EJB)稱為Java 企業Bean,是Java的核心代碼,分別是會話 Bean(Session Bean),實體Bean(Entity Bean)和消息驅動Bean(MessageDriven Bean)。 1.Session Bean用於實現業務邏輯,它可以是有狀態的,也可以是無狀態的。每當客戶端請求時,容器就會選擇壹個Session Bean來為客戶端服務。Session Bean可以直接訪問數據庫,但更多時候,它會通過Entity Bean實現數據訪問。 這個類壹般用單例模式來實現,因為每次連接都需要用到它。 2.Entity Bean是域模型對象, 用於實現O/R映射,負責將數據庫中的表記錄映射為內存中的Entity對象,事實上,創建壹個Entity Bean對象相當於新建壹條記錄,刪除壹個 Entity Bean會同時從數據庫中刪除對應記錄,修改壹個Entity Bean時,容器會自動將Entity Bean的狀態和數據庫同步。 Java Persistence 1.0規範中的entity bean僅作為普通Java對象(POJO)來使用,並且是映射到關系數據庫表的。與其他類型的EJB不同,entity bean可以被分配,序列化,並像任何其他POJO那樣通過網絡被發送出去。 3.MessageDriven Bean是EJB2.0中引入的新的企業Bean,它基於JMS消息,只能接收客戶端發送的JMS消息然後處理。MDB實際上是壹個異步的無狀態Session Bean,客戶端調用MDB後無需等待,立刻返回,MDB將異步處理客戶請求。這適合於需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間的等待壹個方法調用直到返回結果。 三、Enterprise Bean 與 JavaBean的區別 最 初,JavaBean的目的是為了將可以重復使用的軟件代碼打包標準。特別是用與幫助廠家開發在綜合開發環境(IDE)下使用的java軟件部件。這些包 括如Grid控件,用戶可以將該部件拖放到開發環境中。從此,JavaBean就可以擴展為壹個java web 應用的標準部件,並且JavaBean部件框架已經擴展為企業版的 Bean(EJB)。JavaBean 和 Server Bean(通常稱為 Enterprise JavaBean (EJB))有壹些基本相同之處。它們都是用壹組特性創建,以執行其特定任務的對象或組件。它們還有從當前所駐留服務器上的容器獲得其它特性的能力。這使 得 bean 的行為根據特定任務和所在環境的不同而有所不同。 JavaBean 是使用 java.beans 包開發的,它是 Java 2 標準版的壹部分。JavaBean 是壹臺機器上同壹個地址空間中運行的組件。JavaBean 是進程內組件。Enterprise Bean 是使用 javax.ejb 包開發的,它是標準 JDK 的擴展,是 Java 2 Enterprise Edition 的壹部分。Enterprise Bean 是在多臺機器上跨幾個地址空間運行的組件。因此 Enterprise Bean 是進程間組件。JavaBean 通常用作 GUI 窗口小部件,而 Enterprise Bean 則用作分布式商業對象. 四、POJO壹個正規的Java對象(不是JavaBean,EntityBean等),也不擔當任何的特殊的角色,也不實現任何Java框架指定的接口。POJO是壹個簡單的、正規Java對象,它包含業務邏輯處理或持久化邏輯等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不繼承或不實現任何其它Java框架的類或接口。 POJO 應該不是我們開始認為的JavaBean,當然更不是EJB,它不應該依賴於框架即繼承或實現某些框架類或接口。例如:Struts1中的Action和 ActionForm當然不屬於POJO了,而在Struts2中的Action由於可以不繼承任何的接口,所以在這種情況下Action是POJO,但 是Struts2中的Action也可以繼承ActionSupport類就不再屬於POJO了。POJO裏面是可以包含業務邏輯處理和持久化邏輯,也可 以包含類似與JavaBean屬性和對屬性訪問的set和get方法的。 在百度百科上的解釋是:簡 單的Java對象(Plain Ordinary Java Objects)實際就是普通JavaBeans,使用POJO名稱是為了避免和EJB混淆起來, 而且簡稱比較直接. 其中有壹些屬性及其getter setter方法的類,有時可以作為value object或dto(Data Transform Object)來使用.當然,如果妳有壹個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有connection之類的方法。