亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


 

POJO

簡單的JAVA對象(Plain ordinary Java Objects)實際就是普通JavaBeans,使用POJO名稱是為了避免和EJB混淆起來, 而且簡稱比較直接。

其中有一些屬性及其getter setter方法的類,有時可以作為value object或dto(Data Transform Object)來使用。

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

PO

PO(persistant object) 持久對象,可以看成是與數(shù)據(jù)庫中的表相映射的java對象。一張表對映一個PO。

最簡單的PO就是對應(yīng)數(shù)據(jù)庫中某個表中的一條記錄,多個記錄可以用PO的集合。PO中應(yīng)該不包含任何對數(shù)據(jù)庫的操作。

DAO

DAO (data access object) 數(shù)據(jù)訪問對象,此對象用于訪問數(shù)據(jù)庫。

通常和PO結(jié)合使用,DAO中包含了各種數(shù)據(jù)庫的操作方法。通過它的方法,結(jié)合PO對數(shù)據(jù)庫進(jìn)行相關(guān)的操作。

DTO

DTO (Data Transfer Object)

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

VO

VO(value object) 值對象,通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和PO一樣也是僅僅包含數(shù)據(jù)而已。

但應(yīng)是抽象出的業(yè)務(wù)對象,可以和表對應(yīng),也可以不,這根據(jù)業(yè)務(wù)的需要。個人覺得同DTO(數(shù)據(jù)傳輸對象),在web上傳遞。

BO

BO:全稱是business object:業(yè)務(wù)對象,主要作用是把業(yè)務(wù)邏輯封裝為一個對象。這個對象可以包括一個或多個其它的對象。

比如一個簡歷,有教育經(jīng)歷、工作經(jīng)歷、社會關(guān)系等等。我們可以把教育經(jīng)歷對應(yīng)一個PO,工作經(jīng)歷對應(yīng)一個PO,社會關(guān)系對應(yīng)一個PO。

建立一個對應(yīng)簡歷的BO對象處理簡歷,每個BO包含這些PO。這樣處理業(yè)務(wù)邏輯時,我們就可以針對BO去處理。

biz

biz是Business的縮寫,是業(yè)務(wù)邏輯層,一般意義上和service層差不多。項目前期或者小項目沒什么太大區(qū)別,但是項目大了以后區(qū)別就很大了。

項目開發(fā)到后期的話,一個項目內(nèi)包含有其他的小項目,比如:后臺、erp、商城等等,都用的是同一個數(shù)據(jù)庫。這個時候,就不能使用一個service/biz 全部解決了。有些業(yè)務(wù)是通用的,有一些業(yè)務(wù)可能只有erp有,其他模塊沒有,也有可能同一個業(yè)務(wù),在細(xì)微上有一些差別,如果全部都放進(jìn)一個業(yè)務(wù)層中的話,這個業(yè)務(wù)層就會非常的臃腫。這個時候就需要拆分,一個基礎(chǔ)業(yè)務(wù)層,一個應(yīng)用層業(yè)務(wù)層,基礎(chǔ)業(yè)務(wù)層只是針對該對象的CURD操作

應(yīng)用業(yè)務(wù)層就是一個復(fù)雜的功能模塊或流程。

 

這時可以考慮service作基礎(chǔ)業(yè)務(wù)層,biz作為應(yīng)用層業(yè)務(wù)層。service是比較底層的api,biz是應(yīng)用層的api。可以結(jié)合DDD領(lǐng)域驅(qū)動設(shè)計理解。

 

充血模型與貧血模型

貧血模型最早廣泛應(yīng)用是源自于EJB2,最強(qiáng)盛時期則是由Spring創(chuàng)造,把“行為”(也稱為邏輯、過程)和“狀態(tài)”(可理解為數(shù)據(jù),對應(yīng)到語言就是對象成員變量)分離到不同的對象之中,那個只有狀態(tài)的對象就是所謂的“貧血對象”(常稱為VO——Value Object),而那個只有行為的對象就是我們常見的N層結(jié)構(gòu)中的Logic/Service/Manager層(對應(yīng)到EJB2中的Stateless Session Bean)。

充血模型其實很簡單,就是面向?qū)ο笤O(shè)計的本質(zhì):“一個對象是擁有狀態(tài)和行為的”,比如說一個人,他眼睛什么樣鼻子什么樣這就是狀態(tài),人可以去打游戲或是寫程序,這就是行為。

總結(jié)

貧血模型, 將數(shù)據(jù)與db操作分離, 分個好幾層, 如entity/dao/service等。

充血模型, 數(shù)據(jù)與db操作綁在一次, 一般只涉及到一兩層。

充血模型層數(shù)少,代碼少, 改動少, 簡單, 優(yōu)雅,一般復(fù)雜的系統(tǒng)可以考慮用充血模型,簡單系統(tǒng)用貧血模型也并沒有什么影響。

 

如若轉(zhuǎn)載,請注明出處:開源字節(jié) https://sourcebyte.cn/article/229.html

分享到:
標(biāo)簽:Java
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定