1. 程式人生 > >POJO、JAVABean、Entity的區別

POJO、JAVABean、Entity的區別

POJO
  (Plain Ordinary Java Object)簡單的Java物件,實際就是普通JavaBeans,是為了避免和EJB混淆所創造的簡稱。
  其中有一些屬性及其getter、setter方法的類,沒有業務邏輯,有時可以作為VO(value-object)或DTO(Data Transfer Object)來使用。不允許有業務方法,也不能攜帶connection之類的方法,實際就是普通JavaBeans。POJO類中有屬性和get、set方法,但是沒有業務邏輯

/**
 * POJO類程式碼示例
 */  
public class UserInfoPojoDemo
{
private int userId;// 使用者帳號 private String pwd;// 使用者密碼 /** * Constructor */ public UserInfoPojoDemo() { } public UserInfoPojoDemo(String pwd) { this.pwd = pwd; } public UserInfoPojoDemo(int userId) { this.userId = userId; } public UserInfoPojoDemo
(int userId, String pwd) { this.userId = userId; this.pwd = pwd; } /** *Access */ public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getPwd() { return pwd; } public
void setPwd(String pwd) { this.pwd = pwd; } }

  JavaBean 是一種JAVA語言寫成的可重用元件。JavaBean符合一定規範編寫的Java類,不是一種技術,而是一種規範。大家針對這種規範,總結了很多開發技巧、工具函式。符合這種規範的類,可以被其它的程式設計師或者框架使用。它的方法命名,構造及行為必須符合特定的約定:

1、所有屬性為private。

2、這個類必須有一個公共的預設建構函式。即是提供無引數的構造器。

3、這個類的屬性使用getter和setter來訪問,其他方法遵從標準命名規範。

4、這個類應是可序列化的。實現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當中可以有其它的方法。

entity(實體類)

對java實體類的眾多理解:

A .就是屬性類,通常定義在model層裡面

B. 一般的實體類對應一個數據表,其中的屬性對應資料表中的欄位。
好處:
1.對物件實體的封裝,體現OO思想。
2.屬性可以對欄位定義和狀態進行判斷和過濾
3.把相關資訊用一個實體類封裝後,我們在程式中可以把實體類作為引數傳遞,更加方便。

C. 說白了就是為了讓程式設計師在對資料庫操作的時候不用寫SQL語句

D. 就是一個數據庫表生成一個類
這樣做對資料庫操作起來方便
編寫程式碼較少 提高效率 可以使程式設計師專注邏輯關係

E. 實體類就是把對某一個表的操作全寫在一個類中.

F. 在Java開發中經常要定義一些實體類,這些類的定義的好壞會直接影響,編寫程式碼的質量和難易程度,以下是別人總結的一些經驗。

一、實體類的名字儘量和資料庫的表的名字對應相同。

二、實體類應該實現java.io.Serializable介面。

三、實體類應該有個無參的構造方法。

四、實體類應該有個有參(所有的引數)的構造方法。

五、實體類有屬性和方法,屬性對應資料庫中表的欄位,主要有getter和setter方法。

六、實體類還應該有個屬性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;

七、屬性一般是private型別,方法位public型別,對於資料庫自動生成的ID欄位對應的屬性的set方法應為private。