阿里巴巴Java開發(fā)手冊中的DO棕孙、DTO扯俱、BO、AO牺弹、VO浦马、POJO定義
分層領(lǐng)域模型規(guī)約:
- DO( Data Object):與數(shù)據(jù)庫表結(jié)構(gòu)一一對應(yīng),通過DAO層向上傳輸數(shù)據(jù)源對象张漂。
- DTO( Data Transfer Object):數(shù)據(jù)傳輸對象捐韩,Service或Manager向外傳輸?shù)膶ο蟆?/li>
- BO( Business Object):業(yè)務(wù)對象。 由Service層輸出的封裝業(yè)務(wù)邏輯的對象鹃锈。
- AO( Application Object):應(yīng)用對象。 在Web層與Service層之間抽象的復(fù)用對象模型瞧预,極為貼近展示層屎债,復(fù)用度不高。
- VO( View Object):顯示層對象垢油,通常是Web向模板渲染引擎層傳輸?shù)膶ο蟆?/li>
- POJO( Plain Ordinary Java Object):在本手冊中盆驹, POJO專指只有setter/getter/toString的簡單類,包括DO/DTO/BO/VO等滩愁。
- Query:數(shù)據(jù)查詢對象躯喇,各層接收上層的查詢請求。 注意超過2個參數(shù)的查詢封裝硝枉,禁止使用Map類來傳輸廉丽。
領(lǐng)域模型命名規(guī)約:
- 數(shù)據(jù)對象:xxxDO,xxx即為數(shù)據(jù)表名妻味。
- 數(shù)據(jù)傳輸對象:xxxDTO正压,xxx為業(yè)務(wù)領(lǐng)域相關(guān)的名稱。
- 展示對象:xxxVO责球,xxx一般為網(wǎng)頁名稱焦履。
- POJO是DO/DTO/BO/VO的統(tǒng)稱,禁止命名成xxxPOJO雏逾。
POJO PO BO DO DTO VO
概述
縮寫 全稱 中文 功能 說明
POJO plain ordinary java object 無規(guī)則簡單java對象 中間對象嘉裤,與其他對象轉(zhuǎn)換
PO persistent object 持久對象 數(shù)據(jù)對象對應(yīng)數(shù)據(jù)庫中的entity
BO business object 業(yè)務(wù)對象 封裝業(yè)務(wù)邏輯對象
VO value object / view object 表現(xiàn)層對象 封裝視圖層對象
DTO data transfer object 數(shù)據(jù)傳輸對象 跨進(jìn)程或遠(yuǎn)程傳輸
DO domain object 領(lǐng)域?qū)ο? 從現(xiàn)實世界中抽象出來的有形或無形的業(yè)務(wù)實體
DAO data access object 數(shù)據(jù)訪問對象 封裝對數(shù)據(jù)庫訪問對象
問題
為什么項目中要存在多種對象,多種對象直接需要相互轉(zhuǎn)換栖博,是否無用屑宠?
舉例:數(shù)據(jù)插入操作
HTTP:
(Controller 層 )VO 對象 --> (Service 層) BO 對象 --> (DAO 層) PO 對象 --> DAO 對象
RPC :
(RPC 接口)DTO 對象 --> --> (Service 層) BO 對象 --> (DAO 層) PO 對象 --> DAO 對象
回答:
世界上有大狗(可以看家護(hù)院)的存在也有小狗存在的必要,沒有一種事務(wù)的存在是沒有理由的
代碼中不同的層次需要使用不同的對象笛匙,使用不同的對象是為了更好的理解業(yè)務(wù)及解決問題
舉例:
PO / DO 對象通常對應(yīng)數(shù)據(jù)表實體映射對象侨把;如果沒有BO對象犀变,此時業(yè)務(wù)需求需要將時間格式化后展示,需要在PO類中增加屬性秋柄,但增加的屬性卻不是表中應(yīng)有的字段获枝,使PO類的含義發(fā)生了變化
如設(shè)計活動,活動實體是一張表骇笔,活動頁面樣式省店、活動優(yōu)惠等等又是一張表,在將數(shù)據(jù)返給前端時笨触,前端不需要知道后端是幾張表的實現(xiàn)懦傍,只需要知道解析這個對象中的相關(guān)屬性即可;此時需要BO對象來中轉(zhuǎn)芦劣,BO對象對應(yīng)多個PO對象
有這種疑問通常是BO與PO對象的屬性完全沒有區(qū)別粗俱,此時需要考慮程序業(yè)務(wù)邏輯,是否需要將查詢結(jié)果全部返回給調(diào)用方
參考資料
PO/POJO/BO/DTO/VO的區(qū)別
Java中PO虚吟、BO寸认、VO、DTO串慰、POJO偏塞、DAO概念及其作用和項目實例圖(轉(zhuǎn))
Java中DO/BO/DTO/VO/AO/PO
作者:命運(yùn)的左岸
來源:CSDN
原文:https://blog.csdn.net/mingyundezuoan/article/details/82926809
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接邦鲫!