Java | DO / DTO / BO / VO的區別

槑孒發表於2024-08-16

在Java開發中,DO、DTO、BO、VO 是常見的術語,分別代表不同的物件型別,每種物件型別有其特定的職責和使用場景。以下是對這些術語的解釋:

1. DO(Data Object)

DO 表示資料物件,通常對應資料庫中的表結構。它是資料庫中資料在應用程式中的抽象表現。DO 通常是簡單的 POJO(Plain Old Java Object),直接對映資料庫表中的欄位。

  • 主要用途: 與資料庫直接互動,用於持久化資料。
  • 示例:
    public class UserDO {
        private Long id;
        private String username;
        private String email;
        // Getters and setters
    }
    

2. DTO(Data Transfer Object)

DTO 表示資料傳輸物件,主要用於在不同系統或不同層之間傳輸資料。DTO 的設計目的是為了減少傳輸過程中不必要的資料,或者將多個物件的資料合併成一個物件以便於傳輸。

  • 主要用途: 在服務層、控制層等不同層次之間傳遞資料,常用於 API 請求和響應的封裝。
  • 示例:
    public class UserDTO {
        private String username;
        private String email;
        // Getters and setters
    }
    

3. BO(Business Object)

BO 表示業務物件,它封裝了業務邏輯,並且通常在服務層中使用。BO 的職責是將業務邏輯與資料操作分離,確保業務邏輯的完整性和可複用性。

  • 主要用途: 封裝業務邏輯,通常包含業務操作方法,處理和協調資料物件的操作。
  • 示例:
    public class UserBO {
        private Long id;
        private String username;
        private String email;
        
        public void validateEmail() {
            // Email validation logic
        }
        
        // Getters and setters
    }
    

4. VO(Value Object)

VO 表示值物件,通常用於表示業務領域中的某個具體檢視(View),或用於傳遞資料展示給前端。VO 常常是隻讀的,並且與實體物件不同,它不一定對應資料庫中的表結構。

  • 主要用途: 展示層用於封裝資料,以便在頁面或前端展示,通常包含只讀資料。
  • 示例:
    public class UserVO {
        private String username;
        private String email;
        private String displayName;
        // Getters and setters
    }
    

總結

  • DO:用於資料持久化,與資料庫表一一對應。
  • DTO:用於資料傳輸,減少不必要的資料傳輸或將多個物件合併傳輸。
  • BO:用於業務邏輯封裝,確保業務操作的一致性。
  • VO:用於資料展示,通常包含只讀屬性,提供給前端使用。

這些物件型別各自承擔著不同的職責,在架構設計中有效區分這些概念有助於程式碼的解耦、可維護性和可擴充套件性。

相關文章