JavaBean,EJB,POJO彙總說明

什麼是JavaBean?

JavaBean 是一種JAVA語言寫成的可重用組件。爲寫成JavaBean,類必須是具體的和公共的,並且具有無參數的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成員屬性,set和get方法獲取。衆所周知,屬性名稱符合這種模式,其他Java 類可以通過自省機制發現和操作這些JavaBean 的屬性。——百科定義

JavaBean特性


  1. 有一個public默認構造器(例如無參構造器,)
  2. 屬性使用public 的get,set方法訪問,也就是說設置成private,同時get,set方法與屬性名的大小也需要對應。例如屬性name,get方法就要寫成,public String getName(){},N大寫。
  3. 需要序列化。這個是框架,工具跨平臺反映狀態必須的。實現java.io.Serializable 接口

JavaBean最初是爲Java GUI的可視化編程實現的.你拖動IDE構建工具創建一個GUI 組件(如多選框),其實是工具給你創建java類,並提供將類的屬性暴露出來給你修改調整,將事件監聽器暴露出來.《java 編程思想(第四版)》

補充:JavaBean最初是爲定義可重用的應用組件而設計的,但當時他們卻主要用作模型來構建用戶界面窗口部件(user interface widgets)。

PO(plain object):用於持久化時(例如保存到數據庫或者緩存);
VO(value object):用於前端展示使用(例如放置到JSP中解析或者給前端傳遞數據)
DTO(data transfer object):用於接口互相調用返回,數據傳輸(例如很多接口調用返回值或消息隊列內容);
特別地,由於class不同,複製時一般推薦
https://github.com/springside/springside4/wiki

EJB

在企業開發中,需要可伸縮的性能和事務、安全機制,這樣能保證企業系統平滑發展,而不是發展到一種規模重新更換一套軟件系統。 然後有提高了協議要求,就出現了Enterprise Bean。EJB在javabean基礎上又提了一些要求,當然更復雜了。

EJB的特性

一個技術規範:EJB 從技術上而言不是一種”產品”
EJB 是一種標準描述了構建應用組件要解決的:
可擴展 (Scalable)
分佈式 (Distributed)
事務處理 (Transactional)
數據存儲 (Persistent)
安全性 (Secure)

EJB的定義

EJB是Enterprise Java Bean 企業級JavaBean
EJB是遵守JavaBean規範的,也可以說是更加具體的JavaBean
EJB又分爲SessionBean(會話Bean)、EntityBean(實體Bean)、MessageDriverBean(消息驅動Bean)
以下是它的定義:
EJB是一種服務器端的組件架構,它使得人們能夠更加快捷、更加簡便地開發分佈式、支持事務的、安全的和可移植的Java應用系統。
①Java語言編寫的
②服務器端企業級應用組件
③可分佈式部署的組件
④一般用於封裝企業應用的業務邏輯
基於組件的開發,其規範頒佈了一組明確的EJB容器和EJB組件之間的契約,實現可移植性。
EJB組件在EJB容器中運行,EJB組件包含:EJB bean類、
EJB組件接口(遠程接口)、EJB Home接口

POJO

POJO:“Plain Old Java Object”
EJB太複雜了,完全沒必要每次都用,所以發明了個POJO,POJO是普通的javabean,什麼是普通,就是和EJB對應的。
總之,區別就是,你先判斷是否滿足javabean的條件,然後如果再實現一些要求,滿足EJB條件就是EJB,否則就是POJO。

POJO與JavaBean的區別

POJO(Plain Ordinary Java Object)簡單的Java對象,實際就是普通JavaBeans,是爲了避免和EJB混淆所創造的簡稱。

使用POJO名稱是爲了避免和EJB混淆起來, 而且簡稱比較直接. 其中有一些屬性及其getter、setter方法的類,沒有業務邏輯,有時可以作爲VO(value -object)或dto(Data Transform Object)來使用.當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有connection之類的方法。

POJO對象有時也被稱爲Data對象,大量應用於表現現實中的對象。如果項目中使用了Hibernate框架,有一個關聯的xml文件,使對象與數據庫中的表對應,對象的屬性與表中的字段相對應。

POJO 和JavaBean是我們常見的兩個關鍵字,一般容易混淆,POJO全稱是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻譯成:普通Java類,具有一部分getter/setter方法的那種類就可以稱作POJO,但是JavaBean則比 POJO複雜很多, Java Bean 是可複用的組件,對 Java Bean 並沒有嚴格的規範,理論上講,任何一個 Java 類都可以是一個 Bean 。但通常情況下,由於 Java Bean 是被容器所創建(如 Tomcat) 的,所以 Java Bean 應具有一個無參的構造器,另外,通常 Java Bean 還要實現 Serializable 接口用於實現 Bean 的持久性。 Java Bean 是不能被跨進程訪問的。JavaBean是一種組件技術,就好像你做了一個扳子,而這個扳子會在很多地方被拿去用,這個扳子也提供多種功能(你可以拿這個扳子扳、錘、撬等等),而這個扳子就是一個組件。一般在web應用程序中建立一個數據庫的映射對象時,我們只能稱它爲POJO。POJO(Plain Old Java Object)這個名字用來強調它是一個普通java對象,而不是一個特殊的對象,其主要用來指代那些沒有遵從特定的Java對象模型、約定或框架(如EJB)的Java對象。理想地講,一個POJO是一個不受任何限制的Java對象(除了Java語言規範)。

POJO是一個簡單的普通的Java對象,它不包含業務邏輯或持久邏輯等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不繼承或不實現任何其它Java框架的類或接口。

多說一點:vo

vo有兩種說法,一個是viewObject,一個是valueObject..就拿前者來說吧,它只負責封裝頁面傳遞過來的數據,這和PO有些不同..就拿struts1來說,ActionForm就是一個典型的viewObject. 而valueObject是頁面與頁面之間的傳遞時保存值的對象….總的來說,PO是最終傳給BO以及BO傳個DAO的東西,他很多情況下與我們真正的數據庫表想對應.而viewObject是一個頁面上提交後的數據,不一定完全和PO的屬性相同
實際上沒區別 他們的功能都一樣 不過他們使用地點不一樣

po是在持久層所使用的 用來封裝原始數據 而VO則主要在視圖層活動 兩個JAVABEAN的使用範圍不同 假如你從數據庫取出來的原始數據 你可以通過業務層將數據進行封裝 再通過VO發到頁面上去

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章