javaBean 是一種JAVA語言寫成的可重用組件。為寫成JavaBean,類必須是具體的和公共的,并且具有無參數(shù)的構(gòu)造器。JavaBean 通過提供符合一致性設(shè)計模式的公共方法將內(nèi)部域暴露成員屬性。眾所周知,屬性名稱符合這種模式,其他Java 類可以通過自身機(jī)制發(fā)現(xiàn)和操作這些JavaBean 的屬性。
VO即value object值對象
主要體現(xiàn)在視圖的對象,對于一個WEB頁面將整個頁面的屬性封裝成一個對象。然后用一個VO對象在控制層與視圖層進(jìn)行傳輸交換。
DTO (經(jīng)過處理后的PO,可能增加或者減少PO的屬性):
Data Transfer Object數(shù)據(jù)傳輸對象
主要用于遠(yuǎn)程調(diào)用等需要大量傳輸對象的地方。
比如我們一張表有100個字段,那么對應(yīng)的PO就有100個屬性。
但是我們界面上只要顯示10個字段,
客戶端用WEB service來獲取數(shù)據(jù),沒有必要把整個PO對象傳遞到客戶端,
這時我們就可以用只有這10個屬性的DTO來傳遞結(jié)果到客戶端,這樣也不會暴露服務(wù)端表結(jié)構(gòu).到達(dá)客戶端以后,如果用這個對象來對應(yīng)界面顯示,那此時它的身份就轉(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對象,大量應(yīng)用于表現(xiàn)現(xiàn)實中的對象。
一個POJO持久化以后就是PO。
直接用它傳遞、傳遞過程中就是DTO
直接用來對應(yīng)表示層就是VO
JavaBean: 先說JavaBean,JavaBean更多的是一種規(guī)范,也即包含一組set和get方法的Java對象。
POJO: 普通的Java對象,對于屬性一般實現(xiàn)了JavaBean的標(biāo)準(zhǔn),另外還可以包含一些簡單的業(yè)務(wù)邏輯(方法)。
PO: POJO在持久層的體現(xiàn),對POJO持久化后就成了PO。PO更多的是跟數(shù)據(jù)庫設(shè)計層面相關(guān),一般PO與數(shù)據(jù)表對應(yīng),一個PO就是對應(yīng)數(shù)據(jù)表的一條記錄。
DAO: PO持久化到數(shù)據(jù)庫是要進(jìn)行相關(guān)的數(shù)據(jù)庫操作的(CRUQ),這些對數(shù)據(jù)庫操作的方法會統(tǒng)一放到一個Java對象中,這就是DAO。
BO: POJO在業(yè)務(wù)層的體現(xiàn),對于業(yè)務(wù)操作來說,更多的是從業(yè)務(wù)上來包裝對象,如一個User的BO,可能包括name, age, sex, privilege, group等,這些屬性在數(shù)據(jù)庫中可能會在多張表中,因為每一張表對應(yīng)一個PO,而我們的BO需要這些PO組合起來(或說重新拼裝)才能成為業(yè)務(wù)上的一個完整對象。
VO(Value Object/View Object): POJO在表現(xiàn)層的體現(xiàn)。 當(dāng)我們處理完數(shù)據(jù)時,需要展現(xiàn)時,這時傳遞到表現(xiàn)層的POJO就成了VO。它就是為了展現(xiàn)數(shù)據(jù)時用的。
DTO(Data Transfer Object): POJO在系統(tǒng)間傳遞時。當(dāng)我們需要在兩個系統(tǒng)間傳遞數(shù)據(jù)時,一種方式就是將POJO序列化后傳遞,這個傳遞狀態(tài)的POJO就是DTO。
新聞熱點
疑難解答