主要結(jié)論
在項(xiàng)目應(yīng)用中,VO對(duì)應(yīng)于頁(yè)面上需要顯示的數(shù)據(jù)(表單),DO對(duì)應(yīng)于數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)(數(shù)據(jù)表),DTO對(duì)應(yīng)于除二者之外需要進(jìn)行傳遞的數(shù)據(jù)。
DO(Domain Object)
就是從現(xiàn)實(shí)世界中抽象出來的有形或無(wú)形的業(yè)務(wù)實(shí)體。一般和數(shù)據(jù)中的表結(jié)構(gòu)對(duì)應(yīng)。
VO (Value Object )
用于表示一個(gè)與前端進(jìn)行交互的 java 對(duì)象。有的朋友也許有疑問,這里可不可以使用 PO 傳遞數(shù)據(jù)?實(shí)際上,這里的 VO 只包含前端需要展示的數(shù)據(jù)即可,對(duì)于前端不需要的數(shù)據(jù),比如數(shù)據(jù)創(chuàng)建和修改的時(shí)間等字段,出于減少傳輸數(shù)據(jù)量大小和保護(hù)數(shù)據(jù)庫(kù)結(jié)構(gòu)不外泄的目的,不應(yīng)該在 VO 中體現(xiàn)出來。通常遵守 Java Bean 的規(guī)范,擁有 getter/setter 方法。
DTO (Data Transfer Object)
用于表示一個(gè)數(shù)據(jù)傳輸對(duì)象。DTO 通常用于不同服務(wù)或服務(wù)不同分層之間的數(shù)據(jù)傳輸。DTO 與 VO 概念相似,并且通常情況下字段也基本一致。但 DTO 與 VO 又有一些不同,這個(gè)不同主要是設(shè)計(jì)理念上的,比如 API 服務(wù)需要使用的 DTO 就可能與 VO 存在差異。通常遵守 Java Bean 的規(guī)范,擁有 getter/setter 方法。
POJO(Plain Ordinary Java Object)
表示一個(gè)簡(jiǎn)單 java 對(duì)象。上面說的 DO、VO、DTO 都是典型的 POJO