說實在話娃承,在印象里。這兩個概念一直覺得是一樣的桩匪,分不清他們的區(qū)別打瘪。今天特地在網(wǎng)上找了一篇文章(謝謝博主@lushuaiyin的分享),覺得講的很不錯吸祟。所以分享一下:
什么是POJO
按照Martin Fowler的解釋是“Plain Old Java Object”瑟慈,從字面上翻譯為“純潔老式的java對象”,但大家都使用“簡單java對象”來稱呼它屋匕。POJO的內(nèi)在含義是指那些沒有從任何類繼承葛碧、也沒有實現(xiàn)任何接口,更沒有被其它框架侵入的java對象过吻。
pojo和javabean的比較
pojo的格式是用于數(shù)據(jù)的臨時傳遞进泼,它只能裝載數(shù)據(jù), 作為數(shù)據(jù)存儲的載體纤虽,而不具有業(yè)務(wù)邏輯處理的能力乳绕。
而javabean雖然數(shù)據(jù)的獲取與pojo一樣,但是javabean當中可以有其它的方法逼纸。
JavaBean 是一種JAVA語言寫成的可重用組件洋措。它的方法命名,構(gòu)造及行為必須符合特定的約定:
這個類必須有一個公共的缺省構(gòu)造函數(shù)杰刽。
這個類的屬性使用getter和setter來訪問菠发,其他方法遵從標準命名規(guī)范王滤。
這個類應是可序列化的。
另外的一些解釋:
JavaBean 是一種JAVA語言寫成的可重用組件滓鸠。為寫成JavaBean雁乡,類必須是具體的和公共的,并且具有無參數(shù)的構(gòu)造器糜俗。JavaBean 通過提供符合一致性設(shè)計模式的公共方法將內(nèi)部域暴露成員屬性踱稍。眾所周知,屬性名稱符合這種模式悠抹,其他Java 類可以通過自身機制發(fā)現(xiàn)和操作這些JavaBean 的屬性珠月。VO即value object值對象主要體現(xiàn)在視圖的對象,對于一個WEB頁面將整個頁面的屬性封裝成一個對象锌钮。然后用一個VO對象在控制層與視圖層進行傳輸交換桥温。DTO (經(jīng)過處理后的PO,可能增加或者減少PO的屬性):Data Transfer Object數(shù)據(jù)傳輸對象主要用于遠程調(diào)用等需要大量傳輸對象的地方梁丘。比如我們一張表有100個字段侵浸,那么對應的PO就有100個屬性。但是我們界面上只要顯示10個字段氛谜,客戶端用WEB service來獲取數(shù)據(jù)掏觉,沒有必要把整個PO對象傳遞到客戶端,這時我們就可以用只有這10個屬性的DTO來傳遞結(jié)果到客戶端值漫,這樣也不會暴露服務(wù)端表結(jié)構(gòu).到達客戶端以后澳腹,如果用這個對象來對應界面顯示,那此時它的身份就轉(zhuǎn)為VO杨何。POJO(POJO是一種概念或者接口酱塔,身份及作用隨環(huán)境變化而變化) :POJO有一些private的參數(shù)作為對象的屬性。然后針對每個參數(shù)定義了get和set方法作為訪問的接口plain ordinary java object 簡單java對象即POJO是一個簡單的普通的Java對象危虱,它不包含業(yè)務(wù)邏輯或持久邏輯等羊娃,但不是JavaBean、EntityBean等埃跷,不具有任何特殊角色和不繼承或不實現(xiàn)任何其它Java框架的類或接口蕊玷。POJO對象有時也被稱為Data對象,大量應用于表現(xiàn)現(xiàn)實中的對象弥雹。 一個POJO持久化以后就是PO垃帅。直接用它傳遞、傳遞過程中就是DTO直接用來對應表示層就是VO