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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四种实体类类型:VO、DTO、DO、PO

發(fā)布時間:2024/3/26 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四种实体类类型:VO、DTO、DO、PO 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在項目應(yīng)用中,VO對應(yīng)于頁面上需要顯示的數(shù)據(jù)(表單),DO對應(yīng)于數(shù)據(jù)庫中存儲的數(shù)據(jù)(數(shù)據(jù)表),DTO對應(yīng)于除二者之外需要進行傳遞的數(shù)據(jù)。
一、實體類
百度百科中對于實體類的定義如下:
實體類的主要職責(zé)是存儲和管理系統(tǒng)內(nèi)部的信息,它也可以有行為,甚至很復(fù)雜的行為,但這些行為必須與它所代表的實體對象密切相關(guān)。
根據(jù)以上定義,我們可以了解到,實體類有兩方面內(nèi)容,存儲數(shù)據(jù)和執(zhí)行數(shù)據(jù)本身相關(guān)的操作。這兩方面內(nèi)容對應(yīng)到實現(xiàn)上,最簡單的實體類是POJO類,含有屬性及屬性對應(yīng)的set和get方法,實體類常見的方法還有用于輸出自身數(shù)據(jù)的toString方法。


二、領(lǐng)域模型中的實體類
領(lǐng)域模型中的實體類分為四種類型:VO、DTO、DO、PO,各種實體類用于不同業(yè)務(wù)層次間的交互,并會在層次內(nèi)實現(xiàn)實體類之間的轉(zhuǎn)化。
業(yè)務(wù)分層為:視圖層(VIEW+ACTION),服務(wù)層(SERVICE),持久層(DAO)
相應(yīng)各層間實體的傳遞如下圖:

項目中我們并沒有嚴格遵循這種傳遞關(guān)系,但這種和業(yè)務(wù)層次的關(guān)聯(lián)對我們理解各實體類的作用是有幫助的。(我們沒有接觸到PO的原因,我理解為ORM對PO進行了封裝)
以下是資料的原文,上圖是基于此繪制的:
概念:
VO(View Object):視圖對象,用于展示層,它的作用是把某個指定頁面(或組件)的所有數(shù)據(jù)封裝起來。
DTO(Data Transfer Object):數(shù)據(jù)傳輸對象,這個概念來源于J2EE的設(shè)計模式,原來的目的是為了EJB的分布式應(yīng)用提供粗粒度的數(shù)據(jù)實體,以減少分布式調(diào)用的次數(shù),從而提高分布式調(diào)用的性能和降低網(wǎng)絡(luò)負載,但在這里,我泛指用于展示層與服務(wù)層之間的數(shù)據(jù)傳輸對象。
DO(Domain Object):領(lǐng)域?qū)ο?#xff0c;就是從現(xiàn)實世界中抽象出來的有形或無形的業(yè)務(wù)實體。
PO(PersistentObject):持久化對象,它跟持久層(通常是關(guān)系型數(shù)據(jù)庫)的數(shù)據(jù)結(jié)構(gòu)形成一一對應(yīng)的映射關(guān)系,如果持久層是關(guān)系型數(shù)據(jù)庫,那么,數(shù)據(jù)表中的每個字段(或若干個)就對應(yīng)PO的一個(或若干個)屬性。


模型:
下面以一個時序圖建立簡單模型來描述上述對象在三層架構(gòu)應(yīng)用中的位置
l 用戶發(fā)出請求(可能是填寫表單),表單的數(shù)據(jù)在展示層被匹配為VO。
l 展示層把VO轉(zhuǎn)換為服務(wù)層對應(yīng)方法所要求的DTO,傳送給服務(wù)層。
l 服務(wù)層首先根據(jù)DTO的數(shù)據(jù)構(gòu)造(或重建)一個DO,調(diào)用DO的業(yè)務(wù)方法完成具體業(yè)務(wù)。
l服務(wù)層把DO轉(zhuǎn)換為持久層對應(yīng)的PO(可以使用ORM工具,也可以不用),調(diào)用持久層的持久化方法,把PO傳遞給它,完成持久化操作。
l 對于一個逆向操作,如讀取數(shù)據(jù),也是用類似的方式轉(zhuǎn)換和傳遞,略。
三、項目中的實體類
項目中常見的實體類有VO,DO和DTO,命名規(guī)則也常是以相應(yīng)字符串結(jié)尾,如*VO.Java。但是DTO不總是遵循這個規(guī)則,而通常與他的用途有關(guān),如寫成*Query.java,表示存儲了一個查詢條件。項目中實體類出現(xiàn)的業(yè)務(wù)層次也沒有這么嚴格,例如我們可以在視圖層就組裝一個DO,也可以將一個VO從持久層傳出來,所以與業(yè)務(wù)分層相關(guān)聯(lián)的劃分方法顯得有些冗余。從項目代碼中抽象出的理解是:VO對應(yīng)于頁面上需要顯示的數(shù)據(jù),DO對應(yīng)于數(shù)據(jù)庫中存儲的數(shù)據(jù),DTO對應(yīng)于除二者之外需要進行傳遞的數(shù)據(jù)。

轉(zhuǎn)載地址:https://blog.csdn.net/zhang53141/article/details/72875833

總結(jié)

以上是生活随笔為你收集整理的四种实体类类型:VO、DTO、DO、PO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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