91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PO、VO、DAO、BO、DTO、POJO應(yīng)該怎么分層

Android編程精選 ? 來(lái)源:Android編程精選 ? 2023-05-18 11:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

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

《阿里巴巴Java開(kāi)發(fā)規(guī)范》關(guān)于領(lǐng)域模型的部分介紹如下

分層領(lǐng)域模型規(guī)約:

DO(Data Object):此對(duì)象與數(shù)據(jù)庫(kù)表結(jié)構(gòu)一一對(duì)應(yīng),通過(guò) DAO 層向上傳輸數(shù)據(jù)源對(duì)象。

DTO(Data Transfer Object):數(shù)據(jù)傳輸對(duì)象,Service 或 Manager 向外傳輸?shù)膶?duì)象。

BO(Business Object):業(yè)務(wù)對(duì)象,由 Service 層輸出的封裝業(yè)務(wù)邏輯的對(duì)象。

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

VO(View Object):顯示層對(duì)象,通常是 Web 向模板渲染引擎層傳輸?shù)膶?duì)象。

Query:數(shù)據(jù)查詢(xún)對(duì)象,各層接收上層的查詢(xún)請(qǐng)求。注意超過(guò) 2 個(gè)參數(shù)的查詢(xún)封裝,禁止使用 Map 類(lèi)來(lái)傳輸。

領(lǐng)域模型命名規(guī)約:

數(shù)據(jù)對(duì)象:xxxDO,xxx即為數(shù)據(jù)表名

數(shù)據(jù)傳輸對(duì)象:xxxDTO,xxx為業(yè)務(wù)領(lǐng)域相關(guān)的名稱(chēng)。

展示對(duì)象:xxxVO,xxx一般為網(wǎng)頁(yè)名稱(chēng)。

POJO:DO/DTO/BO/VO的統(tǒng)稱(chēng),禁止命名成xxxPOJO。

PO (persistant object )持久對(duì)象

可以看成是與數(shù)據(jù)庫(kù)中的表相映射的java對(duì)象。使用Hibernate來(lái)生成PO是不錯(cuò)的選擇。

VO (value object) 值對(duì)象

通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和PO一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對(duì)象,可以和表對(duì)應(yīng),也可以不,這根據(jù)業(yè)務(wù)的需要。

PO只能用在數(shù)據(jù)層,VO用在商業(yè)邏輯層和表示層。各層操作屬于該層自己的數(shù)據(jù)對(duì)象,這樣就可以降低各層之間的耦合,便于以后系統(tǒng)的維護(hù)和擴(kuò)展。

DAO (Data Access Objects) 數(shù)據(jù)訪問(wèn)對(duì)象接口

DAO是Data Access Object數(shù)據(jù)訪問(wèn)接口,數(shù)據(jù)訪問(wèn):顧名思義就是與數(shù)據(jù)庫(kù)打交道。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫(kù)資源中間。J2EE開(kāi)發(fā)人員使用數(shù)據(jù)訪問(wèn)對(duì)象(DAO)設(shè)計(jì)模式把底層的數(shù)據(jù)訪問(wèn)邏輯和高層的商務(wù)邏輯分開(kāi)。實(shí)現(xiàn)DAO模式能夠更加專(zhuān)注于編寫(xiě)數(shù)據(jù)訪問(wèn)代碼。

DAO模式是標(biāo)準(zhǔn)的J2EE設(shè)計(jì)模式之一,開(kāi)發(fā)人員使用這個(gè)模式把底層的數(shù)據(jù)訪問(wèn)操作和上層的商務(wù)邏輯分開(kāi)。一個(gè)典型的DAO實(shí)現(xiàn)有下列幾個(gè)組件:

一個(gè)DAO工廠類(lèi);

一個(gè)DAO接口;

一個(gè)實(shí)現(xiàn)DAO接口的具體類(lèi);

數(shù)據(jù)傳遞對(duì)象(有些時(shí)候叫做值對(duì)象),具體的DAO類(lèi)包含了從特定的數(shù)據(jù)源訪問(wèn)數(shù)據(jù)的邏輯。

BO (Business Object) 業(yè)務(wù)對(duì)象層

表示應(yīng)用程序領(lǐng)域內(nèi)“事物”的所有實(shí)體類(lèi)。這些實(shí)體類(lèi)駐留在服務(wù)器上,并利用服務(wù)類(lèi)來(lái)協(xié)助完成它們的職責(zé)。

DTO (Data Transfer Object) 數(shù)據(jù)傳輸對(duì)象

主要用于遠(yuǎn)程調(diào)用等需要大量傳輸對(duì)象的地方。比如我們一張表有100個(gè)字段,那么對(duì)應(yīng)的PO就有100個(gè)屬性。但是我們界面上只要顯示10個(gè)字段,客戶(hù)端用WEB service來(lái)獲取數(shù)據(jù),沒(méi)有必要把整個(gè)PO對(duì)象傳遞到客戶(hù)端,這時(shí)我們就可以用只有這10個(gè)屬性的DTO來(lái)傳遞結(jié)果到客戶(hù)端,這樣也不會(huì)暴露服務(wù)端表結(jié)構(gòu)。到達(dá)客戶(hù)端以后,如果用這個(gè)對(duì)象來(lái)對(duì)應(yīng)界面顯示,那此時(shí)它的身份就轉(zhuǎn)為VO。

POJO (Plain Old Java Objects) 簡(jiǎn)單的Java對(duì)象

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

當(dāng)然,如果你有一個(gè)簡(jiǎn)單的運(yùn)算屬性也是可以的,但不允許有業(yè)務(wù)方法,也不能攜帶有connection之類(lèi)的方法。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 封裝
    +關(guān)注

    關(guān)注

    128

    文章

    9253

    瀏覽量

    148668
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    4020

    瀏覽量

    68364
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73999

原文標(biāo)題:別亂分層,PO、VO、DAO、BO、DTO、POJO 到底應(yīng)該用在哪里,你知道嗎?

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    PGA204的1管腳和9管腳沒(méi)有用到(Vo1,Vo2),布線時(shí)應(yīng)該如何布線?

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

    聲音有PO-PO雜聲?

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

    制板文件請(qǐng)教.bo .bs .cs

    大家好:請(qǐng)教PCB制板文件 .bo.bs.cs.drl.rout.ss.to.ts這是哪個(gè)軟件生成的文件?如何轉(zhuǎn)成gerber文件?謝謝!
    發(fā)表于 07-05 15:52

    ESP8266連接到Li Po時(shí)無(wú)法啟動(dòng)怎么解決?

    參考,它應(yīng)該在 70 毫安左右。電池已正確充電。MT3608設(shè)置為輸出5V。 現(xiàn)在,這就是它變得有趣的地方。如果我用 NiHm 電池組更換 Li Po,ESP 突然完美啟動(dòng)!沒(méi)有任何問(wèn)題。但我需要它來(lái)
    發(fā)表于 05-29 06:33

    Vishay DTO25 PCB上的耗散功率則達(dá)到3W以上

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

    PCB分層堆疊設(shè)計(jì)的EMI屏蔽問(wèn)題解決方案

    從信號(hào)走線來(lái)看,好的分層策略應(yīng)該是把所有的信號(hào)走線放在一層或若干層,這些層緊挨著電源層或接地層。對(duì)于電源,好的分層策略應(yīng)該是電源層與接地層相鄰,且電源層與接地層的距離盡可能小,這就是我
    發(fā)表于 03-12 14:04 ?2060次閱讀

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

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

    PO VO DTO轉(zhuǎn)換神器的思路

    當(dāng)然有的人喜歡寫(xiě)get set,或者用BeanUtils 進(jìn)行復(fù)制,代碼只是工具,本文只是提供一種思路。 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
    的頭像 發(fā)表于 10-12 11:13 ?1838次閱讀

    一種rGO負(fù)載的NASICON型Na3Cr0.5V1.5(PO4)3鈉離子正極材料

    材料由簡(jiǎn)單的溶膠凝膠法制備得到。通過(guò)XRD精修確定材料屬于菱形結(jié)構(gòu),空間群為R-3c。V和Cr原子占據(jù)正八面體位點(diǎn),[VO6]/[CrO6]八面體與[PO4]四面體通過(guò)共點(diǎn)方式組成“燈籠”型[Cr0.5V1.5(PO4)3]單元
    的頭像 發(fā)表于 05-18 14:18 ?2677次閱讀

    MapStruct是用來(lái)做什么的

    首先來(lái)了解一下DTO,DTO簡(jiǎn)單的理解就是做數(shù)據(jù)傳輸對(duì)象的,類(lèi)似于VO,但是VO用于傳輸?shù)角岸恕?/div>
    的頭像 發(fā)表于 06-15 17:02 ?2160次閱讀

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

    從信號(hào)走線來(lái)看,好的分層策略應(yīng)該是把所有的信號(hào)走線放在一層或若干層,這些層緊挨著電源層或接地層。對(duì)于電源,好的分層策略應(yīng)該是電源層與接地層相鄰,且電源層與接地層的距離盡可能小,這就是我
    的頭像 發(fā)表于 09-26 16:18 ?1301次閱讀

    如何分清POVO、DAO、BO、DTOPOJO?

    基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶(hù)小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶(hù)、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
    發(fā)表于 03-07 09:38 ?2216次閱讀

    別再用BeanUtils了,這款PO VO DTO轉(zhuǎn)換神器不香么?

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

    mybatis的dao能重載嗎

    MyBatis的DAO能否重載? 在MyBatis中,DAO是數(shù)據(jù)訪問(wèn)對(duì)象的縮寫(xiě),用于執(zhí)行與數(shù)據(jù)庫(kù)交互的操作。MyBatis的DAO可以重載,即可以定義多個(gè)具有不同參數(shù)的相同方法名的方法,以滿(mǎn)足
    的頭像 發(fā)表于 12-03 11:51 ?2001次閱讀

    HTX DAO生態(tài)系統(tǒng)已加入19個(gè)重要建設(shè)者,共同為HTX DAO生態(tài)做出貢獻(xiàn)

    HTX DAO生態(tài)系統(tǒng)已加入19個(gè)重要建設(shè)者,共同為HTX DAO生態(tài)做出貢獻(xiàn) 隨著2月2日第十一批HTX DAO生態(tài)建設(shè)者的加入,目前,HTX DAO生態(tài)系統(tǒng)已加入19個(gè)重要建設(shè)者,
    的頭像 發(fā)表于 02-21 16:46 ?838次閱讀
    HTX <b class='flag-5'>DAO</b>生態(tài)系統(tǒng)已加入19個(gè)重要建設(shè)者,共同為HTX <b class='flag-5'>DAO</b>生態(tài)做出貢獻(xiàn)