VO,DTO,PO 的个人见解
1.VO,DTO,PO的概念
- VO 是Value Object 的縮寫,值對象,位于視圖層,每一個(gè)字段與視圖層所需要的字段對應(yīng)
- DTO是Data Transfer Object 的縮寫,數(shù)據(jù)傳輸對象,在視圖層和服務(wù)層之間傳輸用來轉(zhuǎn)換從PO到VO,或者從VO到PO的中間對象
- PO 是Persistent Object 的縮寫,持久化對象,位于持久層,每一個(gè)字段,與數(shù)據(jù)庫相對應(yīng)
2.舉例說明
現(xiàn)在有一個(gè)html頁面,上面有個(gè)用戶注冊表單, 有username、password、age 3個(gè)字段
VO 也有這三個(gè)字段對應(yīng)視圖上的3個(gè)字段
PO對應(yīng)的數(shù)據(jù)庫表中只有username,password 這2個(gè)字段
private string name; private string pass;現(xiàn)在有一個(gè)業(yè)務(wù),需求是:只有“年齡大于20的才能存入數(shù)據(jù)庫”
這個(gè)時(shí)候,就要用到VO了
我們要先從頁面上拿到VO,然后判斷VO中的age是不是大于20,如果大于20,就把VO中的username和password拿出來,放到DTO中,然后在把DTO中的username和password原封不動地放入PO中,然后將PO傳入數(shù)據(jù)庫,這就是他們?nèi)齻€(gè)的區(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的中間過程,如果沒有這個(gè)過程,你仍然可以做到增刪改查,這個(gè)就根據(jù)具體公司來的
過程:
下面以一個(gè)時(shí)序圖建立簡單模型來描述上述對象在三層架構(gòu)應(yīng)用中的位置
-
用戶發(fā)出請求(可能是填寫表單),表單的數(shù)據(jù)在展示層被匹配為VO。
-
展示層把VO轉(zhuǎn)換為服務(wù)層對應(yīng)方法所要求的DTO,傳送給服務(wù)層。
-
服務(wù)層首先根據(jù)DTO的數(shù)據(jù)構(gòu)造(或重建)一個(gè)DO,調(diào)用DO的業(yè)務(wù)方法完成具體業(yè)務(wù)。
-
服務(wù)層把DO轉(zhuǎn)換為持久層對應(yīng)的PO(可以使用ORM工具,也可以不用),調(diào)用持久層的持久化方法,把PO傳遞給它,完成持久化操作。
-
對于一個(gè)逆向操作,如讀取數(shù)據(jù),也是用類似的方式轉(zhuǎn)換和傳遞,略。
總結(jié)
以上是生活随笔為你收集整理的VO,DTO,PO 的个人见解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 熊猫烧香简介
- 下一篇: cesium实现图片与文字合成新图标