吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PO、VO、DAO、BO、DTO、POJO應該怎么分層

Android編程精選 ? 來源:Android編程精選 ? 2023-05-18 11:00 ? 次閱讀

前言

一個項目中不一定都能用得上全部的分層規約,但十分有必要了解每一種的用法,便于去閱讀其他人的代碼。同樣的,雖然遵守規約寫代碼可能會略微拉低你寫代碼的速度(PS:多寫一些實體類),但越是規范化,模板化的東西,后期的維護成本和學習成本會越低。

《阿里巴巴Java開發規范》關于領域模型的部分介紹如下

分層領域模型規約:

DO(Data Object):此對象與數據庫表結構一一對應,通過 DAO 層向上傳輸數據源對象。

DTO(Data Transfer Object):數據傳輸對象,Service 或 Manager 向外傳輸的對象。

BO(Business Object):業務對象,由 Service 層輸出的封裝業務邏輯的對象。

AO(ApplicationObject):應用對象,在Web層與Service層之間抽象的復用對象模型, 極為貼近展示層,復用度不高。

VO(View Object):顯示層對象,通常是 Web 向模板渲染引擎層傳輸的對象。

Query:數據查詢對象,各層接收上層的查詢請求。注意超過 2 個參數的查詢封裝,禁止使用 Map 類來傳輸。

領域模型命名規約:

數據對象:xxxDO,xxx即為數據表名

數據傳輸對象:xxxDTO,xxx為業務領域相關的名稱。

展示對象:xxxVO,xxx一般為網頁名稱。

POJO:DO/DTO/BO/VO的統稱,禁止命名成xxxPOJO。

PO (persistant object )持久對象

可以看成是與數據庫中的表相映射的java對象。使用Hibernate來生成PO是不錯的選擇。

VO (value object) 值對象

通常用于業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已。但應是抽象出的業務對象,可以和表對應,也可以不,這根據業務的需要。

PO只能用在數據層,VO用在商業邏輯層和表示層。各層操作屬于該層自己的數據對象,這樣就可以降低各層之間的耦合,便于以后系統的維護和擴展。

DAO (Data Access Objects) 數據訪問對象接口

DAO是Data Access Object數據訪問接口,數據訪問:顧名思義就是與數據庫打交道。夾在業務邏輯與數據庫資源中間。J2EE開發人員使用數據訪問對象(DAO)設計模式把底層的數據訪問邏輯和高層的商務邏輯分開。實現DAO模式能夠更加專注于編寫數據訪問代碼。

DAO模式是標準的J2EE設計模式之一,開發人員使用這個模式把底層的數據訪問操作和上層的商務邏輯分開。一個典型的DAO實現有下列幾個組件:

一個DAO工廠類;

一個DAO接口;

一個實現DAO接口的具體類;

數據傳遞對象(有些時候叫做值對象),具體的DAO類包含了從特定的數據源訪問數據的邏輯。

BO (Business Object) 業務對象層

表示應用程序領域內“事物”的所有實體類。這些實體類駐留在服務器上,并利用服務類來協助完成它們的職責。

DTO (Data Transfer Object) 數據傳輸對象

主要用于遠程調用等需要大量傳輸對象的地方。比如我們一張表有100個字段,那么對應的PO就有100個屬性。但是我們界面上只要顯示10個字段,客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構。到達客戶端以后,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO。

POJO (Plain Old Java Objects) 簡單的Java對象

實際就是普通JavaBeans,使用POJO名稱是為了避免和EJB混淆起來,而且簡稱比較直接。其中有一些屬性及其getter、setter方法的類,有時可以作為value object或dto(Data Transform Object)來使用。

當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有connection之類的方法。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 封裝
    +關注

    關注

    127

    文章

    7997

    瀏覽量

    143417
  • 數據庫
    +關注

    關注

    7

    文章

    3848

    瀏覽量

    64692
  • 代碼
    +關注

    關注

    30

    文章

    4828

    瀏覽量

    69063

原文標題:別亂分層,PO、VO、DAO、BO、DTO、POJO 到底應該用在哪里,你知道嗎?

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PGA204的1管腳和9管腳沒有用到(Vo1,Vo2),布線時應該如何布線?

    PGA204的1管腳和9管腳沒有用到(Vo1,Vo2),布線時應該如何布線,是直接懸空還還是接AGND或者是VCC呢?
    發表于 08-28 08:20

    聲音有PO-PO雜聲?

    `大家討論下這個問題: 一個繼電器去切換A B兩路功放的聲音, 一個喇叭發聲, 在切換的過程中有PO-PO聲音 ,每次切換到A或者切換到B 都有PO的一聲 ! 大伙幫忙分析下,多謝!`
    發表于 11-16 15:36

    制板文件請教.bo .bs .cs

    大家好:請教PCB制板文件 .bo.bs.cs.drl.rout.ss.to.ts這是哪個軟件生成的文件?如何轉成gerber文件?謝謝!
    發表于 07-05 15:52

    ESP8266連接到Li Po時無法啟動怎么解決?

    參考,它應該在 70 毫安左右。電池已正確充電。MT3608設置為輸出5V。 現在,這就是它變得有趣的地方。如果我用 NiHm 電池組更換 Li Po,ESP 突然完美啟動!沒有任何問題。但我需要它來
    發表于 05-29 06:33

    Vishay DTO25 PCB上的耗散功率則達到3W以上

     Vishay Intertechnology宣布,發布新的通過AEC-Q200認證的25W厚膜功率電阻---DTO25,它采用小尺寸、表面貼裝TO-252型(DPAK)封裝。對于汽車、工業和國防
    發表于 04-09 10:32 ?1234次閱讀

    PCB分層堆疊設計的EMI屏蔽問題解決方案

    從信號走線來看,好的分層策略應該是把所有的信號走線放在一層或若干層,這些層緊挨著電源層或接地層。對于電源,好的分層策略應該是電源層與接地層相鄰,且電源層與接地層的距離盡可能小,這就是我
    發表于 03-12 14:04 ?1622次閱讀

    智能合約Nervos DAO的存入和取出功能介紹

    Nervos DAO 是一個智能合約,就像 CKB 上其他的智能合約一樣,用戶可以與之交互。Nervos DAO 的功能之一就是為 CKByte 持幣者提供一種抗稀釋的功能。
    發表于 11-08 11:31 ?3141次閱讀

    PO VO DTO轉換神器的思路

    當然有的人喜歡寫get set,或者用BeanUtils 進行復制,代碼只是工具,本文只是提供一種思路。 pom 配置: properties ???????? project.build.sourceEncoding UTF-8 / project.build.sourceEncoding ???????? maven.compiler.source 1.8 / maven.compiler.source ???????? maven.compiler.target 1.8 / maven.compiler.target ???????? org.mapstruct.version 1.4.1.Final / org.mapstruct.version ???????? org.projectlombok.version 1.18.12 / org.projectlombok.version / properties dependencies ???????? dependency ???????????? gr
    的頭像 發表于 10-12 11:13 ?1478次閱讀

    MapStruct是用來做什么的

    首先來了解一下DTODTO簡單的理解就是做數據傳輸對象的,類似于VO,但是VO用于傳輸到前端。
    的頭像 發表于 06-15 17:02 ?1659次閱讀

    如何巧妙利用PCB分層堆疊控制EMI輻射?

    從信號走線來看,好的分層策略應該是把所有的信號走線放在一層或若干層,這些層緊挨著電源層或接地層。對于電源,好的分層策略應該是電源層與接地層相鄰,且電源層與接地層的距離盡可能小,這就是我
    的頭像 發表于 09-26 16:18 ?809次閱讀

    MOSFET 和 GaN FET 應用手冊-Nexperia_document_bo...

    MOSFET 和 GaN FET 應用手冊-Nexperia_document_bo...
    發表于 02-17 19:13 ?46次下載
    MOSFET 和 GaN FET 應用手冊-Nexperia_document_<b class='flag-5'>bo</b>...

    如何分清POVODAOBODTOPOJO

    基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能
    發表于 03-07 09:38 ?1353次閱讀

    別再用BeanUtils了,這款PO VO DTO轉換神器不香么?

    關于lombok和mapstruct的版本兼容問題多說幾句,maven插件要使用3.6.0版本以上、lombok使用1.16.16版本以上,另外編譯的lombok mapstruct的插件不要忘了加上。
    的頭像 發表于 07-10 10:46 ?609次閱讀
    別再用BeanUtils了,這款<b class='flag-5'>PO</b> <b class='flag-5'>VO</b> <b class='flag-5'>DTO</b>轉換神器不香么?

    mybatis的dao能重載嗎

    MyBatis的DAO能否重載? 在MyBatis中,DAO是數據訪問對象的縮寫,用于執行與數據庫交互的操作。MyBatis的DAO可以重載,即可以定義多個具有不同參數的相同方法名的方法,以滿足
    的頭像 發表于 12-03 11:51 ?1355次閱讀

    HTX DAO生態系統已加入19個重要建設者,共同為HTX DAO生態做出貢獻

    HTX DAO生態系統已加入19個重要建設者,共同為HTX DAO生態做出貢獻 隨著2月2日第十一批HTX DAO生態建設者的加入,目前,HTX DAO生態系統已加入19個重要建設者,
    的頭像 發表于 02-21 16:46 ?379次閱讀
    HTX <b class='flag-5'>DAO</b>生態系統已加入19個重要建設者,共同為HTX <b class='flag-5'>DAO</b>生態做出貢獻
    百家乐官网游戏下载| 678百家乐博彩赌场娱乐网规则 | 真人百家乐官网作假视频| 菲律宾太阳网| 大发888 58| 全讯网新2网站112| CEO百家乐的玩法技巧和规则| 菲律宾百家乐娱乐场| 百家乐视频看不到| 微信百家乐官网群二维码| 金冠百家乐官网的玩法技巧和规则 | 什么百家乐官网平注法| 隆昌县| 海林市| 百家乐官网在线手机玩| 百家乐官网赌假的工具| 百家乐官网现金网排名| 百家乐官网三号的赢法| 百家乐官网输了好多钱| 澳门赌百家乐官网打法| 龙游县| 百家乐官网的路单怎样看| 上海百家乐官网赌博| 澳门百家乐官网怎么| 玩百家乐官网输了| 赌神网百家乐官网2| 做生意门口对着通道| 百家乐分析软件下| 百家乐游戏真钱游戏| 百家乐官网龙虎扑克| 风水中的24山图| gt百家乐平台| 首席百家乐的玩法技巧和规则 | 曼哈顿百家乐娱乐城| 威尼斯人娱乐 老品牌| 欢乐谷娱乐城开户| 百家乐官网免费路单| 博之道百家乐官网技巧| 扑克百家乐官网麻将筹码防伪| 百家乐保单详图| 玩百家乐免费|