java對象PO、BO、VO、DTO、POJO、DAO、DO概念及其作用

假設數據庫中現在有一張有 個屬性的student表(sid,name,sex,class,admi_time(入學時間),grad_time(畢業時間))
頁面需要顯示的數據:sid,name,class

簡書:淺析DO、VO、DTO、PO的概念與區別

目錄

一、PO(Persistent Object)

二、BO(Business Object)

三、VO(Value/View Object)

四、DTO(Data Transfer Object)

五、POJO(Plain ordinary java object)

六、DAO(Data Access Object)

七、DO(Domain Object)

八、區別

九、命名規則

一、PO(Persistent Object)

持久化對象,它跟持久層(通常是關係型數據庫)的數據結構形成一一對應的映射關係。
僅用於表示數據,除了getter/setter之外沒有任何操作。通常遵守 Java Bean 的規範。
優點:一個po對象相當於數據庫中的一條記錄。
PO屬性:sid、name、sex、class、admi_time、grad_time

持久化是將程序數據在持久狀態和瞬時狀態間轉換的機制。通俗的講,就是瞬時數據(比如內存中的數據,是不能永久保存的)持久化爲持久數據(比如持久化至數據庫中,能夠長久保存)。

二、BO(Business Object)

業務對象,主要作用是把業務邏輯封裝爲一個對象。這個對象可以包括一個或多個其它的對象。
常常封裝了對 DAO、RPC(遠程過程調用) 等的調用,可以進行 PO 與 VO/DTO 之間的轉換。
BO 通常位於業務層,要區別於直接對外提供服務的服務層:BO 提供了基本業務單元的基本業務操作。在設計上屬於被服務層業務流程調用的對象,一個業務流程可能需要調用多個 BO 來完成。
關於BO主要有三種概念
1 、只包含業務對象的屬性;
2 、只包含業務方法;
3 、兩者都包含。

業務邏輯:負責系統領域業務的處理,負責邏輯性數據的生成、處理及轉換。對所輸入的邏輯性數據的正確性及有效性負責,但對輸出的邏輯性數據及用戶性數據的正確性不負責,對數據的呈現樣式不負責。

三、VO(Value/View Object)

表現層用於表示一個與前端進行交互的 java 對象。擁有getter/setter方法。通常遵守 Java Bean 的規範。
優點:用一個VO對象表示一整個頁面所需要展示的值,其他不需要的數據不應該放入對象中,減少了數據傳輸量。
VO屬性:sid,name,class

四、DTO(Data Transfer Object)

數據傳輸對象,主要用於遠程調用、不同層之間(通常是view和service之間)等需要大量傳輸對象的地方。通常遵守 Java Bean 的規範,擁有 getter/setter 方法。
注意:類似於VO。
假設客戶端需要獲取:sid,name,grad_time,則
DTO屬性:sid,name,grad_time
假設客戶端需要獲取的屬性對應於頁面輸出的內容,則DTO相當於VO。

五、POJO(Plain ordinary java object)

簡單java對象

  • 一個POJO持久化以後就是PO;
  • 直接用它傳遞、傳遞過程中就是DTO;
  • 直接用來對應表示層就是VO。

六、DAO(Data Access Object)

數據訪問對象,使用 DAO 訪問數據庫,包括增刪改查等操作,與 PO 一起使用。DAO 一般在持久層,完全封裝數據庫操作,對外暴露的方法使得上層應用不需要關注數據庫相關的任何信息。

七、DO(Domain Object)

領域對象,就是從現實世界中抽象出來的有形或無形的業務實體。簡單來說,就是對現實世界各種業務角色的抽象(例如:user、student)
DO屬性:sid、name、sex、class、admi_time、grad_time

八、區別

1. DTO和DO的區別

DO作爲對現實世界各種業務角色的抽象,可能會包含一個password的屬性,但是DTO作爲傳輸數據,在使用getter方法時不可返回password

2. DTO和VO的區別

VO用於展示頁面數據,DTO一般用於在前後端間傳輸數據;
在VO中性別爲男、女,而在DTO中爲了傳輸方便一般使用1(男)、2(女)表示

3. 各種對象的轉換圖

來源見水印
在這裏插入圖片描述

九、命名規則

  1. 數據對象:xxxDO,xxx即爲數據表名;

  2. 數據傳輸對象:xxxDTO,xxx爲業務領域相關的名稱;

  3. 展示對象:xxxVO,xxx一般爲網頁的名稱;

  4. POJO 是DO/DTO/BO/VO的統稱,禁止命名成xxxPOJO。

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