Java中的PO,BO,VO,DTO,POJO,DAO,DO

PO(Persistant Object - 持久化對象)

該概念隨著ORM產(chǎn)生,可以看成是與數(shù)據(jù)庫中的表相映射的Java對象。通常就是對應(yīng)數(shù)據(jù)庫中某個表中的一條記錄。PO僅僅用于表示數(shù)據(jù),沒有任何數(shù)據(jù)操作。通常遵守Java Bean的規(guī)范,擁有 getter/setter方法。

PO的生命周期:是向數(shù)據(jù)庫中添加新數(shù)據(jù)時創(chuàng)建,刪除數(shù)據(jù)庫中數(shù)據(jù)時削除的。并且它只能存活在一個數(shù)據(jù)庫連接中,斷開連接即被銷毀。
PO的作用:可以把數(shù)據(jù)表中一條記錄作為一個對象處理,可以方便的轉(zhuǎn)為其它對象。PO是有狀態(tài)的,每個屬性代表其當前的狀態(tài)。使用它,可以使我們的程序與物理數(shù)據(jù)解耦,并且可以簡化對象數(shù)據(jù)與物理數(shù)據(jù)之間的轉(zhuǎn)換。
PO的特點:

PO的屬性是跟數(shù)據(jù)庫表的字段一一對應(yīng)的
PO對象需要實現(xiàn)序列化接口
一個POJO持久化后就是PO

BO(Business Object - 業(yè)務(wù)對象)

BO用于表示一個業(yè)務(wù)對象,它包括了業(yè)務(wù)邏輯,常常封裝了對DAO和RPC等的調(diào)用,可以進行PO與VO/DTO之間的轉(zhuǎn)換。
BO通常位于業(yè)務(wù)層,要區(qū)別于直接對外提供服務(wù)的服務(wù)層:BO提供了基本業(yè)務(wù)單元的基本業(yè)務(wù)操作,在設(shè)計上屬于被服務(wù)層業(yè)務(wù)流程調(diào)用的對象,一個業(yè)務(wù)流程可能需要調(diào)用多個BO來完成。

DO(Domain Object - 領(lǐng)域?qū)ο螅?/h4>

領(lǐng)域?qū)ο缶褪菑默F(xiàn)實世界中抽象出來的有形或無形的業(yè)務(wù)實體。通常位于業(yè)務(wù)層中。

VO(Value Object/View Object - 值對象/視圖對象)

Value Object,值對象,也稱為業(yè)務(wù)對象,是存活在業(yè)務(wù)層的,是業(yè)務(wù)邏輯使用的,它存活的目的就是為數(shù)據(jù)提供一個生存的地方(實際上跟DO有點類似)。
VO的屬性是根據(jù)當前業(yè)務(wù)的不同而不同的,也就是說,它的每一個屬性都一一對應(yīng)當前業(yè)務(wù)邏輯所需要的數(shù)據(jù)的名稱。
VO通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,其僅僅包含數(shù)據(jù)。但應(yīng)是抽象出的業(yè)務(wù)對象。根據(jù)業(yè)務(wù)的需要,其可以和表對應(yīng)或者不。用new關(guān)鍵字創(chuàng)建,由GC進行回收。
View Object,視圖對象,用于展示層,它的作用是把某個指定頁面(或組件)的所有數(shù)據(jù)封裝起來,對應(yīng)整個界面的值

DTO(Data Transfer Object - 數(shù)據(jù)傳輸對象)

DTO概念來源于J2EE的設(shè)計模式,原來的目的是為了EJB的分布式應(yīng)用提供粗粒度的數(shù)據(jù)實體,以減少分布式調(diào)用的次數(shù),從而提高分布式調(diào)用的性能和降低網(wǎng)絡(luò)負載。
DTO用于表示一個數(shù)據(jù)傳輸對象,通常用于不同服務(wù)或服務(wù)不同分層之間的數(shù)據(jù)傳輸。
DTO與VO與類似,但也有一些不同,這個不同主要是設(shè)計理念上的,比如API服務(wù)需要使用的是DTO,而用于展示層頁面的使用的是VO。例如,為了展示方便,在VO的性別字段存的是男和女,而在DTO中存的是1或者2這樣的代碼。

DAO(Data Access Object - 數(shù)據(jù)訪問對象)

DAO是SUN公司的一個標準J2EE設(shè)計模式,這個模式中有個接口就是 DAO,負責(zé)持久層的操作并為業(yè)務(wù)層提供接口。此對象用于訪問數(shù)據(jù)庫。通常和PO結(jié)合使用。
DAO中包含了各種數(shù)據(jù)庫的操作方法。通過它的方法結(jié)合PO對數(shù)據(jù)庫進行CRUD的操作。

POJO(Plain Ordinary Java Object - 簡單無規(guī)則Java對象)

POJO表示一個簡單Java對象。PO、VO、DTO都是典型的POJO。

作者:CK
鏈接:https://juejin.cn/post/6952848675924082718
來源:稀土掘金

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容