java pojo
pojo(plain ordinary java object)即簡單的java對象,實際就是普通 javabeans,是為了避免和ejb混淆所創(chuàng)造的簡稱。
使用 pojo 名稱是為了避免和 ejb 混淆起來, 而且簡稱比較直接。pojo 是有一些屬性和getter setter方法的類,但沒有業(yè)務邏輯,有時可以作為vo(value-object)或dto(data transform object)來使用。當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業(yè)務方法,也不能攜帶有connection之類的方法。
1. 自身特點
pojo是plain ordinaryjava object的縮寫,但是它通指沒有使用entity beans的普通java對象,可以把pojo作為支持業(yè)務邏輯的協助類。
pojo實質上可以理解為簡單的實體類,顧名思義pojo類的作用是方便程序員使用數據庫中的數據表,對于廣大的程序員,可以很方便的將pojo類當做對象來進行使用,當然也是可以方便的調用其get,set方法。pojo類也給我們在struts框架中的配置帶來了很大的方便。
2. pojo范例
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文件,使對象與數據庫中的表對應,對象的屬性與表中的字段相對應。
3. pojo與javabean的區(qū)別
pojo 和javabean是我們常見的兩個關鍵字,一般容易混淆,pojo全稱是plain old java object / pure old java object,中文可以翻譯成:普通java類,具有一部分getter/setter方法的那種類就可以稱作pojo,但是javabean則比 pojo復雜很多, java bean 是可復用的組件,對 java bean 并沒有嚴格的規(guī)范,理論上講,任何一個 java 類都可以是一個 bean 。但通常情況下,由于 java bean 是被容器所創(chuàng)建(如 tomcat) 的,所以 java bean 應具有一個無參的構造器。
另外,通常 java bean 還要實現 serializable 接口用于實現 bean 的持久性。 java bean 是不能被跨進程訪問的。javabean是一種組件技術,就好像你做了一個扳子,而這個扳子會在很多地方被拿去用,這個扳子也提供多種功能(你可以拿這個扳子扳、錘、撬等等),而這個扳子就是一個組件。一般在web應用程序中建立一個數據庫的映射對象時,我們只能稱它為pojo。pojo(plain old java object)這個名字用來強調它是一個普通java對象,而不是一個特殊的對象,其主要用來指代那些沒有遵從特定的java對象模型、約定或框架(如ejb)的java對象。理想地講,一個pojo是一個不受任何限制的java對象(除了java語言規(guī)范)。
3.1 錯誤的認識
pojo是這樣的一種“純粹的”javabean,在它里面除了javabean規(guī)范的方法和屬性沒有別的東西,即private屬性以及對這個屬性方法的public的get和set方法。我們會發(fā)現這樣的javabean很“單純”,它只能裝載數據,作為數據存儲的載體,而不具有業(yè)務邏輯處理的能力。
3.2 真正的意思
pojo是martinfowler等發(fā)明的一個術語,用來表示普通的java對象,不是javabean, entitybean 或者 sessionbean。pojo不擔當任何特殊的角色,也不實現任何特殊的java框架的接口。
pojo是一個簡單的普通的java對象,它不包含業(yè)務邏輯或持久邏輯等,但不是javabean、entitybean等,不具有任何特殊角色和不繼承或不實現任何其它java框架的類或接口。
下面是摘自martin fowler個人網站的一句話:
"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." --martin fowler
我們疑惑為什么人們不喜歡在他們的系統(tǒng)中使用普通的對象,我們得到的結論是--普通的對象缺少一個響亮的名字,因此我們給它們起了一個,并且取得了很好的效果。