日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用

發布時間:2023/12/20 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

四、經驗總結

  • PO(Entity) 這個是沒有辦法省略的,所有涉及數據庫操作的都需要有持久化對象
  • 不是非常大型的簡單系統,DTO 和 BO 可以合并為一個,當業務擴展的時候注意拆分即可
  • 概念是給人用的,多人協作的時候一定要保證大家的概念一致。請勿形而上學、過度設計、一切設計都基于現有的業務規則和系統大小
  • 總結

    以上是生活随笔為你收集整理的VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。