POJO對象


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

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

POJO是Plain Old Java Objects的縮寫不錯,但是它通指沒有使用Entity Beans的普通java對象,可以把POJO作為支持業務邏輯的協助類。
POJO實質上可以理解為簡單的實體類,顧名思義POJO類的作用是方便程序員使用數據庫中的數據表,對於廣大的程 序員,可以很方便的將POJO類當做對象來進行使用,當然也是可以方便的調用其get,set方法。POJO類也給我們在struts框架中的配置帶來了 很大的方便。
POJO有一些private的 參數作為對象的屬性。然后針對每個 參數定義了get和set方法作為訪問的接口。例如:
public class User {
private long id;
private String name;
public void setId(long id) {
this. id = id;
}
public void setName(String name) {
this. name=name;
}
public long getId() {
return id;
}
public String getName() {
return name;
}
}
POJO對象有時也被稱為 Data對象,大量應用於表現現實中的對象。如果項目中使用了Hibernate 框架,有一個關聯的xml文件,使對象與數據庫中的表對應,對象的屬性與表中的字段相對應。
錯誤的認識:
POJO是這樣的一種“純粹的”JavaBean,在它里面除了JavaBean規范的方法和屬性沒有別的東西,即 private屬性以及對這個屬性方法的public的get和set方法。我們會發現這樣的JavaBean很“單純”,它只能裝載數據,作為數據存儲 的載體,而不具有業務邏輯處理的能力。
真正的意思:
POJO = "Plain Ordinary Java Object",是MartinFowler等發明的一個術語,用來表示普通的Java對象,不是JavaBean, EntityBean 或者 SessionBean。POJO不擔當任何特殊的角色,也不實現任何特殊的Java框架的接口如, EJBJDBC等等。
即POJO是一個簡單的普通的Java對象,它不包含業務 邏輯或持久邏輯等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不繼承或不實現任何其它Java框架的類或接口。
 
 
 

1.     什么是POJO

POJO的名稱有多種,pure old java object 、plain ordinary java object 等。

按照Martin Fowler的解釋是“Plain Old Java Object”,從字面上翻譯為“純潔老式的java對象”,但大家都使用“簡單java對象”來稱呼它。

 

POJO的內在含義是指那些沒有從任何類繼承、也沒有實現任何接口,更沒有被其它框架侵入的java對象。

 

POCO的概念是從java的POJO借用而來,而兩者的含義是一致的,不同的僅僅是使用的語言不一樣。所以POCO的解釋就是“Plain Old C# Object”。

2.     為什么會有POJO?

主要是Java的開發者被EJB的繁雜搞怕了,大家經過反思,又回歸“純潔老式”的JavaBean,即有無參構造函數,每個字段都有getter和setter的java類。

3.     POJO的意義

POJO讓開發者可專注於業務邏輯和脫離框架的單元測試。除此之外, 由於POJO並不須要繼承框架的類或實現其接口,開發者能夠極其靈活地搭建繼承結構和建造應用。

 

POJO的意義就在於它的簡單而靈活性,因為它的簡單和靈活,使得POJO能夠任意擴展,從而勝任多個場合,也就讓一個模型貫穿多個層成為現實。

先寫一個核心POJO,然后實現業務邏輯接口和持久化接口,就成了Domain Model; UI需要使用時,就實現數據綁定接口,變成VO(View Object)。

4.     POJO與PO、VO的區別

POJO是指簡單java對象(Plain Old Java Objects、pure old java object 或者 plain ordinary java object)。

PO是指持久對象(persistant object持久對象)。

VO是指值對象或者View對象(Value Object、View Object)。注意,本文的VO特指View Object。

 

持久對象實際上必須對應數據庫中的entity,所以和POJO有所區別。比如說POJO是由new創建,由GC回收。但是持久對象是insert數據庫創建,由數據庫delete刪除的。基本上持久對象生命周期和數據庫密切相關。另外持久對象往往只能存在一個數據庫Connection之中,Connnection關閉以后,持久對象就不存在了,而POJO只要不被GC回收,總是存在的。

 

由於存在諸多差別,因此持久對象PO(Persistent Object)在代碼上肯定和POJO不同,起碼PO相對於POJO會增加一些用來管理數據庫entity狀態的屬性和方法。而ORM追求的目標就是要PO在使用上盡量和POJO一致,對於程序員來說,他們可以把PO當做POJO來用,而感覺不到PO的存在。

5.     POJO的擴展

POJO僅包含最簡單的字段屬性,沒有多余的東西,它本質上就是一個普通的JavaBean。

但是在POJO的基礎上,能夠擴展出不同的對象。

l           為POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就變成了PO。

l           為POJO增加了數據綁定功能之后,POJO就變成了View Object,即UI Model。

l           為POJO增加業務邏輯的方法(比如單據審核、轉帳……)之后,POJO就變成了Domain Model。

l           POJO還可以當作DTO使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM