Java常見對象 DO、BO、DTO、VO、AO、PO

https://blog.csdn.net/uestcyms/article/details/80244407

DO( Data Object)

與數據庫表結構一一對應,通過DAO層向上傳輸數據源對象。

PO(Persistant Object) 持久對象
用於表示數據庫中的一條記錄映射成的 java 對象。PO 僅僅用於表示數據,沒有任何數據操作。通常遵守 Java Bean 的規範,擁有 getter/setter 方法。

可以理解是一個PO就是數據庫中的一條記錄;可以理解某個事務依賴的原始數據;好處是可以將一條記錄最爲一個對象處理,可以方便轉化爲其他對象

BO(Business Object) 業務對象
封裝對象、複雜對象,裏面可能包含多個類
主要作用是把業務邏輯封裝爲一個對象。這個對象可以包括一個或多個其它的對象。

用於表示一個業務對象。BO 包括了業務邏輯,常常封裝了對 DAO、RPC 等的調用,可以進行 PO 與 VO/DTO 之間的轉換。BO 通常位於業務層,要區別於直接對外提供服務的服務層:BO 提供了基本業務單元的基本業務操作,在設計上屬於被服務層業務流程調用的對象,一個業務流程可能需要調用多個 BO 來完成。

比如一個簡歷,有教育經歷、工作經歷、社會關係等等。
我們可以把教育經歷對應一個PO,工作經歷對應一個PO,社會關係對應一個PO。
建立一個對應簡歷的BO對象處理簡歷,每個BO包含這些PO。
這樣處理業務邏輯時,我們就可以針對BO去處理。

AO( Application Object)

應用對象。 在Web層與Service層之間抽象的複用對象模型,極爲貼近展示層,複用度不高。

VO(Value Object) 表現對象
前端界面展示;value object值對象;ViewObject表現層對象;主要對應界面顯示的數據對象。對於一個WEB頁面,或者SWT、SWING的一個界面,用一個VO對象對應整個界面的值;對於Android而言即是activity或view中的數據元素。

用於表示一個與前端進行交互的 java 對象。有的朋友也許有疑問,這裏可不可以使用 PO 傳遞數據?實際上,這裏的 VO 只包含前端需要展示的數據即可,對於前端不需要的數據,比如數據創建和修改的時間等字段,出於減少傳輸數據量大小和保護數據庫結構不外泄的目的,不應該在 VO 中體現出來。通常遵守 Java Bean 的規範,擁有 getter/setter 方法。

DTO(Data Transfer Object) 數據傳輸對象
前端調用時傳輸;也可理解成“上層”調用時傳輸;
比如我們一張表有100個字段,那麼對應的PO就有100個屬性。但是我們界面上只要顯示10個字段,客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以後,如果用這個對象來對應界面顯示,那此時它的身份就轉爲VO.

用於表示一個數據傳輸對象。DTO 通常用於不同服務或服務不同分層之間的數據傳輸。DTO 與 VO 概念相似,並且通常情況下字段也基本一致。但 DTO 與 VO 又有一些不同,這個不同主要是設計理念上的,比如 API 服務需要使用的 DTO 就可能與 VO 存在差異。通常遵守 Java Bean 的規範,擁有 getter/setter 方法

DAO(Data access object) 數據訪問對象
這個大家最熟悉,和上面幾個O區別最大,基本沒有互相轉化的可能性和必要.,主要用來封裝對數據庫的訪問。通過它可以把POJO持久化爲PO,用PO組裝出來VO、DTO;

用於表示一個數據訪問對象。使用 DAO 訪問數據庫,包括插入、更新、刪除、查詢等操作,與 PO 一起使用。DAO 一般在持久層,完全封裝數據庫操作,對外暴露的方法使得上層應用不需要關注數據庫相關的任何信息。

POJO(Plain ordinary java object) 簡單java對象
一個POJO持久化以後就是PO;直接用它傳遞、傳遞過程中就是DTO;直接用來對應表示層就是VO。

舉個例子:
事情:統計研發部門中的季度績效(暫定以工程師填寫的爲準,當然實際上大部分不是)
過程:CTO發佈統計績效請求(附帶要求:每個人對應的績效等級)->各個組(也可以是子部門)負責人發佈統計績效請求(每個對應的績效等級,並將績效分爲了3個方面)->每位開發工程師統計自己績效(自身各個方面);
可以從例子中看到:每個責任人要求都不同;
對於CTO,他需要知道的是該季度所用員工的績效等級;這裏可以認爲VO:員工姓名、績效等級;
開發工程師:需將本人這個季度的各個方面的表現都列出來:員工姓名、績效等級、A方面表現內容及等級、B方面表現內容及等級、C方面表現內容及等級、D方面表現內容及等級、E方面表現內容及等級、F方面表現內容及等級、E方面表現內容及等級;此處可認爲是PO:員工姓名、績效等級、A方面表現內容、A方面等級….E方面表現內容、E方面等級;
然後開發工程師將員工姓名、績效等級、A方面表現內容及等級、B方面表現內容及等級、C方面表現內容及等級內容傳遞給小組負責人;此處傳遞的對象就是DTO
小組負責人:從開發工程師中獲取到數據後,經過評定,然後得出員工姓名、績效等級、原因;此處的評定,可以理解爲BO;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章