POJO(Plain Old Java Objects)簡單的Java對象,實際就是普通JavaBeans,是為了避免和EJB混淆所創(chuàng)造的簡稱。
在Java應(yīng)用程序中的角色使用POJO名稱是為了避免和EJB混淆起來, 而且簡稱比較直接. 其中有一些屬性及其getter setter方法的類,有時可以作為value object或dto(Data Transform Object)來使用.當(dāng)然,如果你有一個簡單的運算屬性也是可以的,但不允許有業(yè)務(wù)方法,也不能攜帶有connection之類的方法。
POJO是Plain Ordinary Java Objects的縮寫不錯,但是它通指沒有使用Entity Beans的普通java對象,可以把POJO作為支持業(yè)務(wù)邏輯的協(xié)助類。
POJO有一些private的參數(shù)作為對象的屬性。然后針對每個參數(shù)定義了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對象,大量應(yīng)用于表現(xiàn)現(xiàn)實中的對象。
錯誤的認(rèn)識:
POJO是這樣的一種“純粹的”JavaBean,在它里面除了JavaBean規(guī)范的方法和屬性沒有別的東西,即private屬性以及對這個屬性方法的public的get和set方法。我們會發(fā)現(xiàn)這樣的JavaBean很“單純”,它只能裝載數(shù)據(jù),作為數(shù)據(jù)存儲的載體,而不具有業(yè)務(wù)邏輯處理的能力。
真正的意思:
POJO = "Plain Old Java Object",是MartinFowler等發(fā)明的一個術(shù)語,用來表示普通的Java對象,不是JavaBean, EntityBean 或者 SessionBean。POJO不擔(dān)當(dāng)任何特殊的角色,也不實現(xiàn)任何特殊的Java框架的接口如,EJB, JDBC等等。
即POJO是一個簡單的普通的Java對象,它包含業(yè)務(wù)邏輯或持久邏輯等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不繼承或不實現(xiàn)任何其它Java框架的類或接口。
下面是摘自Martin Fowler個人網(wǎng)站的一句話:
"We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely."--MartinFowler.com
我們疑惑為什么人們不喜歡在他們的系統(tǒng)中使用普通的對象,我們得到的結(jié)論是——普通的對象缺少一個響亮的名字,因此我們給它們起了一個,并且取得了很好的效果?!狹artin Fowler