VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用
文章目錄
- 一、概念講解
- 二、概念澄清
- 三、使用場景
- 四、經驗總結
一、概念講解
-
VO(View/Value Object)—— 視圖對象
-
DTO(Data Transfer Object)—— 數據傳輸對象
-
BO(Business Object)—— 業務對象
-
PO(Persistent Object)—— 持久對象
-
DO(Data/Domain Object)—— 數據/領域對象
-
POJO(Plain Old/Ordinary Java Object)—— 以上模型的統稱
POJO 是簡單的 Java 對象,不包含業務邏輯、能夠控制自己內部所有屬性訪問的 Java 對象。
二、概念澄清
-
JavaBean VS POJO
JavaBeanPOJO 沒有業務邏輯 沒有業務邏輯 必須構造函數 無需構造函數 private 修飾成員變量 成員變量的修飾符無限制 P.S
JavaBean 其實是 POJO 的一種形式(JavaBean < POJO)
三、使用場景
-
網摘關系圖
-
DTO(Data Transfer Object)數據傳輸對象
數據傳輸對象比較特殊,之所以將 DTO 繪制在 展示層 和 業務邏輯層 之間,是因為它有兩種存在形式:
- 前端:它是以 Json 字串的形式存在
- 后端:它是以 Java 對象的形式存在
微服務之間 DTO 對象的模型鑒定形式:
- 服務(模塊)與服務(模塊)之間相對獨立,我們可以將數據傳輸對象命名為 DTO
- 服務(模塊)與服務(模塊)之間不是獨立,每一個都不是一個完整的業務模塊,拆分可能僅僅是因為計算復雜度或者性能問題考慮拆分的問題,那么就不能將對象命名為 DTO,只能是 BO
-
VO(View/Value Object)—— 視圖對象
VO 就是展示用的數據,不管展示方式是網頁、客戶端、APP,只要是這些數據用于展示給人看的就是 VO
-
VO VS DTO
- 區別一:
字段可能不一樣,VO 會根據實際情況,對字段有所刪減 - 區別二:
屬性值可能不一樣,VO 會根據 DTO 中對值進行展示業務對解釋(比如:為不暴露數據庫字段,修改屬性名稱、敏感字段不展示等等)
- 區別一:
-
PO(Persistent Object)—— 持久對象
簡單的說 PO 就是數據庫中的記錄,一個 PO 的數據結構對應著庫中的表結構,表中的一條記錄就是一個 PO 對象。對于 PO 來說,數量是相對固定的,不會超過數據庫中表的數量。等同于 Entity,它兩概念是一致的。
-
BO(Business Object)—— 業務對象
BO 就是 PO 的組合
- 簡單解釋:
比如:PO 是一個交易記錄,BO 就是一個人全部的交易記錄集合對象 - 復雜解釋:
比如:PO1 是交易記錄,PO2 是登錄記錄、PO3 是商品瀏覽記錄、PO4 是添加購物記錄,BO 就是個人網站行為對象
- 簡單解釋:
-
DO VS DTO
這兩個的區別主要也是字段的刪減。BO 對內,為了進行業務計算需要輔助數據或者一個業務有多個對外接口,BO 可能會含有很多接口對外所不需要的數據,因此 DTO 需要在 BO 的基礎上選取自己所需的數據賦值。
-
DO(Data/Domain Object)—— 數據/領域對象
- 阿里開發手冊
DO 等同于 PO - DDD 領域驅動設計
DO 等同于 BO
- 阿里開發手冊
四、經驗總結
總結
以上是生活随笔為你收集整理的VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python算法--查找兄弟单词
- 下一篇: git推送被拒绝可能的原因