JAVABEAN EJB POJO區別

一、POJOjava

    POJO(Plain Old Java Object)這種叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演講的時候提出來的。按照Martin Fowler的解釋是「Plain Old Java Object」,從字面上翻譯爲「純潔老式的java對象」,但你們都使用「簡單java對象」來稱呼它。程序員

 

POJO的內在含義是指那些:數據庫

有一些private的參數做爲對象的屬性,而後針對每個參數定義get和set方法訪問的接口。服務器

沒有從任何類繼承、也沒有實現任何接口,更沒有被其它框架侵入的java對象。框架

複製代碼
public class User {  
  
    private String name;  
    private int age;  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
}
複製代碼

二、JavaBean函數

JavaBean 是一種JAVA語言寫成的可重用組件。JavaBean符合必定規範編寫的Java類,不是一種技術,而是一種規範。你們針對這種規範,總結了不少開發技巧、工具函數。符合這種規範的類,能夠被其它的程序員或者框架使用。它的方法命名,構造及行爲必須符合特定的約定:工具

一、全部屬性爲private。this

二、這個類必須有一個公共的缺省構造函數。便是提供無參數的構造器。spa

三、這個類的屬性使用getter和setter來訪問,其餘方法聽從標準命名規範。.net

四、這個類應是可序列化的。實現serializable接口。 

由於這些要求主要是靠約定而不是靠實現接口,因此許多開發者把JavaBean看做聽從特定命名約定的POJO。

複製代碼
public class UserInfo implements java.io.Serializable{  
      
    //實現serializable接口。  
    private static final long serialVersionUID = 1L;  
      
    private String name;  
    private int age;  
      
    //無參構造器  
    public UserInfo() {  
          
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public int getAge() {  
        return age;  
    }  
  
    public void setAge(int age) {  
        this.age = age;  
    }  
  
    //javabean當中能夠有其它的方法  
    public void userInfoPrint(){  
        System.out.println("");  
    }  
}
複製代碼

二者有什麼區別?

POJO實際上是比javabean更純淨的簡單類或接口。POJO嚴格地遵照簡單對象的概念,而一些JavaBean中每每會封裝一些簡單邏輯。

pojo的格式是用於數據的臨時傳遞,它只能裝載數據, 做爲數據存儲的載體,而不具備業務邏輯處理的能力。

而javabean雖然數據的獲取與pojo同樣,可是javabean當中能夠有其它的方法。

 

三、DAO

DAO(data access objects)
DAO是數據訪問對象,DAO通常有接口和該接口的實現類,接口用於規範實現類。實現類通常用於操做數據庫,如對數據庫進行修改、添加、刪除等操做,通常直接調用公共類DAO。 


什麼是DTO(data transfer object)、什麼是VO(value object)、什麼是PO(persistent object)?
咱們經過DAO將POJO持久化爲PO,用PO組裝出來VO、DTO。

總結下,我認爲一個對象到底是什麼O要看具體環境,在不一樣的層、不一樣的應用場合,對象的身份也不同,並且對象身份的轉化也是很天然的。就像你對老婆來講就是老公,對父母來講就是子女。設計這些概念的初衷不是爲了唬人而是爲了更好的理解和處理各類邏輯,讓你們能更好的去用面向對象的方式處理問題。

好比:咱們一張表有100個字段,那麼對應的PO就有100個屬性。可是咱們界面上只要顯示10個字段,客戶端用WEBservice來獲取數據,沒有必要把整個PO對象傳遞到客戶端,這時咱們就能夠用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端之後,若是用這個對象來對應界面顯示,那此時它的身份就轉爲VO。

什麼是BO(business object)?

BO: POJO在業務層的體現,對於業務操做來講,更多的是從業務上來包裝對象,如一個User的BO,可能包括name, age, sex, privilege, group等,這些屬性在數據庫中可能會在多張表中,由於每一張表對應一個PO,而咱們的BO須要這些PO組合起來(或說從新拼裝)才能成爲業務上的一個完整對象。

四、EJBEJB(Enterprise JavaBean): 我認爲它是一組"功能"JavaBean的集合。上面說了JavaBean是實現了一種規範的Java對象。這裏說EJB是一組JavaBean,的意思是這一組JavaBean組合起來實現了某個企業組的業務邏輯。這裏的一組JavaBean不是亂組合的,它們要知足能實現某項業務功能的搭配。找個比方,對於一身穿着來講,包括一頂帽子,一件衣服,一條褲子,兩隻鞋。這穿着就是EJB,其它的就是一個JavaBeanSSH與EJB區別EJB是一種javabean的組合規範,SSH是3個框架jar包的組合。EJB自己是JavaEE的規範由容器廠商負責實現,也就是使用EJB,須要使用JavaEE服務器。而用SSH,直接用Web服務器, SSH中要解決的目標和EJB是一致的。EJB是大型的,SSH是輕量級的。

相關文章
相關標籤/搜索