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