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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

VO,DTO,PO 的个人见解

發(fā)布時間:2024/1/8 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VO,DTO,PO 的个人见解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.VO,DTO,PO的概念

  • VO 是Value Object 的縮寫,值對象,位于視圖層,每一個字段與視圖層所需要的字段對應(yīng)
  • DTO是Data Transfer Object 的縮寫,數(shù)據(jù)傳輸對象,在視圖層和服務(wù)層之間傳輸用來轉(zhuǎn)換從PO到VO,或者從VO到PO的中間對象
  • PO 是Persistent Object 的縮寫,持久化對象,位于持久層,每一個字段,與數(shù)據(jù)庫相對應(yīng)

2.舉例說明

現(xiàn)在有一個html頁面,上面有個用戶注冊表單, 有username、password、age 3個字段
VO 也有這三個字段對應(yīng)視圖上的3個字段

private string name; private string pass; private string age;

PO對應(yīng)的數(shù)據(jù)庫表中只有username,password 這2個字段

private string name; private string pass;

現(xiàn)在有一個業(yè)務(wù),需求是:只有“年齡大于20的才能存入數(shù)據(jù)庫”

這個時候,就要用到VO了

我們要先從頁面上拿到VO,然后判斷VO中的age是不是大于20,如果大于20,就把VO中的username和password拿出來,放到DTO中,然后在把DTO中的username和password原封不動地放入PO中,然后將PO傳入數(shù)據(jù)庫,這就是他們?nèi)齻€的區(qū)別

PS:VO對應(yīng)于頁面上需要顯示的數(shù)據(jù),PO對應(yīng)于數(shù)據(jù)庫中存儲的數(shù)據(jù),DTO對應(yīng)于除二者之外需要進(jìn)行傳遞的數(shù)據(jù),DTO只是VO到PO,或者PO到VO的中間過程,如果沒有這個過程,你仍然可以做到增刪改查,這個就根據(jù)具體公司來的

過程

下面以一個時序圖建立簡單模型來描述上述對象在三層架構(gòu)應(yīng)用中的位置

  • 用戶發(fā)出請求(可能是填寫表單),表單的數(shù)據(jù)在展示層被匹配為VO。

  • 展示層把VO轉(zhuǎn)換為服務(wù)層對應(yīng)方法所要求的DTO,傳送給服務(wù)層。

  • 服務(wù)層首先根據(jù)DTO的數(shù)據(jù)構(gòu)造(或重建)一個DO,調(diào)用DO的業(yè)務(wù)方法完成具體業(yè)務(wù)。

  • 服務(wù)層把DO轉(zhuǎn)換為持久層對應(yīng)的PO(可以使用ORM工具,也可以不用),調(diào)用持久層的持久化方法,把PO傳遞給它,完成持久化操作。

  • 對于一個逆向操作,如讀取數(shù)據(jù),也是用類似的方式轉(zhuǎn)換和傳遞,略。

總結(jié)

以上是生活随笔為你收集整理的VO,DTO,PO 的个人见解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。