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。