1. 程式人生 > >POJO PO BO DO DTO VO 區別與聯絡

POJO PO BO DO DTO VO 區別與聯絡

POJO PO BO DO DTO VO


概述

縮寫 全稱 中文 功能 說明
POJO plain ordinary java object 無規則簡單java物件 中間物件,與其他物件轉換
PO persistent object 持久物件 資料物件對應資料庫中的entity
BO business object 業務物件 封裝業務邏輯物件
VO value object / view object 表現層物件 封裝檢視層物件
DTO data transfer object 資料傳輸物件 跨程序或遠端傳輸
DO domain object 領域物件 從現實世界中抽象出來的有形或無形的業務實體
DAO data access object 資料訪問物件 封裝對資料庫訪問物件

問題

  • 為什麼專案中要存在多種物件,多種物件直接需要相互轉換,是否無用?
    • 舉例:資料插入操作
      • HTTP:
        • (Controller 層 )VO 物件 --> (Service 層) BO 物件 --> (DAO 層) PO 物件 --> DAO 物件
      • RPC :
        • (RPC 介面)DTO 物件 --> --> (Service 層) BO 物件 --> (DAO 層) PO 物件 --> DAO 物件
    • 回答:
      • 世界上有大狗(可以看家護院)的存在也有小狗存在的必要,沒有一種事務的存在是沒有理由的
      • 程式碼中不同的層次需要使用不同的物件,使用不同的物件是為了更好的理解業務及解決問題
        • 舉例:
          • PO / DO 物件通常對應資料表實體對映物件;如果沒有BO物件,此時業務需求需要將時間格式化後展示,需要在PO類中增加屬性,但增加的屬性卻不是表中應有的欄位,使PO類的含義發生了變化
          • 如設計活動,活動實體是一張表,活動頁面樣式、活動優惠等等又是一張表,在將資料返給前端時,前端不需要知道後端是幾張表的實現,只需要知道解析這個物件中的相關屬性即可;此時需要BO物件來中轉,BO物件對應多個PO物件
      • 有這種疑問通常是BO與PO物件的屬性完全沒有區別,此時需要考慮程式業務邏輯,是否需要將查詢結果全部返回給呼叫方

參考資料