java 名詞解釋

1. 什麼是POJO

POJO是Plain Ordinary Java Object的縮寫不錯,但是它通指沒有使用Entity Beans的普通java對象,沒有任何有關業務邏輯的實現,可以把POJO作為支持業務邏輯的協助類。

POJO的名稱有多種,pure old java object (純java對象)、plain ordinary java object (普通java對象)等。

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

  1. 為什麼會有POJO?

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

    POJO的意義就在於它的簡單而靈活性,因為它的簡單和靈活,使得POJO能夠任意擴展,從而勝任多個場合,也就讓一個模型貫穿多個層成為現實。先寫一個核心POJO,然後實現業務邏輯接口和持久化接口,就成了Domain Model; UI需要使用時,就實現數據綁定接口,變成VO(View Object)。

  2. 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的存在。

  3. POJO與javabean的區別

    POJO和JavaBean是我們常見的兩個關鍵字,一般容易混淆,POJO全稱是Plain Ordinary Java Object / Pure Old Java Object,中文可以翻譯成:普通Java類,具有一部分getter/setter方法的那種類就可以稱作POJO,但是JavaBean則比 POJO複雜很多, Java Bean 是可複用的組件,對 Java Bean 並沒有嚴格的規範,理論上講,任何一個 Java 類都可以是一個 Bean 。但通常情況下,由於 Java Bean 是被容器所創建(如 Tomcat) 的,所以 Java Bean 應具有一個無參的構造器,另外,通常 Java Bean 還要實現 Serializable 接口用於實現 Bean 的持久性。 Java Bean 是不能被跨進程訪問的。

    JavaBean是一種組件技術,就好像你做了一個扳子,而這個扳子會在很多地方被拿去用,這個扳子也提供多種功能(你可以拿這個扳子扳、錘、撬等等),而這個扳子就是一個組件。

    一般在web應用程序中建立一個數據庫的映射對象時,我們只能稱它為POJO。POJO(Plain Old Java Object)這個名字用來強調它是一個普通java對象,而不是一個特殊的對象,其主要用來指代那些沒有遵從特定的Java對象模型、約定或框架(如EJB)的Java對象。理想地講,一個POJO是一個不受任何限制的Java對象(除了Java語言規範)。

  4. POJO的擴展

    POJO僅包含最簡單的字段屬性,沒有多餘的東西,它本質上就是一個普通的JavaBean。但是在POJO的基礎上,能夠擴展出不同的對象:

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

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

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

    d、 POJO還可以當作DTO使用,等等。

  5. 總結:

    POJO就是普通的java Object(不是什麼高大上,就是普通的java對象,起了一個挺哄人的名字),有屬性變量,加上getter,setter方法,沒有類繼承、也沒有實現任何接口,更沒有被其它框架侵入的java對象。


分享到:


相關文章: