Java POJO

java pojo

pojo(plain ordinary java object)即簡(jiǎn)單的java對(duì)象,實(shí)際就是普通 javabeans,是為了避免和ejb混淆所創(chuàng)造的簡(jiǎn)稱。

使用 pojo 名稱是為了避免和 ejb 混淆起來, 而且簡(jiǎn)稱比較直接。pojo 是有一些屬性和getter setter方法的類,但沒有業(yè)務(wù)邏輯,有時(shí)可以作為vo(value-object)或dto(data transform object)來使用。當(dāng)然,如果你有一個(gè)簡(jiǎn)單的運(yùn)算屬性也是可以的,但不允許有業(yè)務(wù)方法,也不能攜帶有connection之類的方法。

 

1. 自身特點(diǎn)

pojo是plain ordinaryjava object的縮寫,但是它通指沒有使用entity beans的普通java對(duì)象,可以把pojo作為支持業(yè)務(wù)邏輯的協(xié)助類。

pojo實(shí)質(zhì)上可以理解為簡(jiǎn)單的實(shí)體類,顧名思義pojo類的作用是方便程序員使用數(shù)據(jù)庫(kù)中的數(shù)據(jù)表,對(duì)于廣大的程序員,可以很方便的將pojo類當(dāng)做對(duì)象來進(jìn)行使用,當(dāng)然也是可以方便的調(diào)用其get,set方法。pojo類也給我們?cè)趕truts框架中的配置帶來了很大的方便。

 

2. pojo范例

pojo 有一些 private 的參數(shù)作為對(duì)象的屬性。然后針對(duì)每個(gè)參數(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對(duì)象有時(shí)也被稱為data對(duì)象,大量應(yīng)用于表現(xiàn)現(xiàn)實(shí)中的對(duì)象。如果項(xiàng)目中使用了hibernate框架,有一個(gè)關(guān)聯(lián)的xml文件,使對(duì)象與數(shù)據(jù)庫(kù)中的表對(duì)應(yīng),對(duì)象的屬性與表中的字段相對(duì)應(yīng)。

 

3. pojo與javabean的區(qū)別

pojo 和javabean是我們常見的兩個(gè)關(guān)鍵字,一般容易混淆,pojo全稱是plain old java object / pure old java object,中文可以翻譯成:普通java類,具有一部分getter/setter方法的那種類就可以稱作pojo,但是javabean則比 pojo復(fù)雜很多, java bean 是可復(fù)用的組件,對(duì) java bean 并沒有嚴(yán)格的規(guī)范,理論上講,任何一個(gè) java 類都可以是一個(gè) bean 。但通常情況下,由于 java bean 是被容器所創(chuàng)建(如 tomcat) 的,所以 java bean 應(yīng)具有一個(gè)無(wú)參的構(gòu)造器。

另外,通常 java bean 還要實(shí)現(xiàn) serializable 接口用于實(shí)現(xiàn) bean 的持久性。 java bean 是不能被跨進(jìn)程訪問的。javabean是一種組件技術(shù),就好像你做了一個(gè)扳子,而這個(gè)扳子會(huì)在很多地方被拿去用,這個(gè)扳子也提供多種功能(你可以拿這個(gè)扳子扳、錘、撬等等),而這個(gè)扳子就是一個(gè)組件。一般在web應(yīng)用程序中建立一個(gè)數(shù)據(jù)庫(kù)的映射對(duì)象時(shí),我們只能稱它為pojo。pojo(plain old java object)這個(gè)名字用來強(qiáng)調(diào)它是一個(gè)普通java對(duì)象,而不是一個(gè)特殊的對(duì)象,其主要用來指代那些沒有遵從特定的java對(duì)象模型、約定或框架(如ejb)的java對(duì)象。理想地講,一個(gè)pojo是一個(gè)不受任何限制的java對(duì)象(除了java語(yǔ)言規(guī)范)。

 

3.1 錯(cuò)誤的認(rèn)識(shí)

pojo是這樣的一種“純粹的”javabean,在它里面除了javabean規(guī)范的方法和屬性沒有別的東西,即private屬性以及對(duì)這個(gè)屬性方法的public的get和set方法。我們會(huì)發(fā)現(xiàn)這樣的javabean很“單純”,它只能裝載數(shù)據(jù),作為數(shù)據(jù)存儲(chǔ)的載體,而不具有業(yè)務(wù)邏輯處理的能力。

 

3.2 真正的意思

pojo是martinfowler等發(fā)明的一個(gè)術(shù)語(yǔ),用來表示普通的java對(duì)象,不是javabean, entitybean 或者 sessionbean。pojo不擔(dān)當(dāng)任何特殊的角色,也不實(shí)現(xiàn)任何特殊的java框架的接口。

pojo是一個(gè)簡(jiǎn)單的普通的java對(duì)象,它不包含業(yè)務(wù)邏輯或持久邏輯等,但不是javabean、entitybean等,不具有任何特殊角色和不繼承或不實(shí)現(xiàn)任何其它java框架的類或接口。

下面是摘自martin fowler個(gè)人網(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." --martin fowler

我們疑惑為什么人們不喜歡在他們的系統(tǒng)中使用普通的對(duì)象,我們得到的結(jié)論是--普通的對(duì)象缺少一個(gè)響亮的名字,因此我們給它們起了一個(gè),并且取得了很好的效果。

下一節(jié):java volatile

java語(yǔ)言 教程

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频