乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      各種概念POJO、JAVABEAN、DAO、DTO、PO、VO、BO、SSH、EJB

       昵稱15242507 2014-09-26

       發(fā)文前聲明:下面內(nèi)容是本人日常學(xué)習(xí)做的筆記,一些內(nèi)容來(lái)源于互聯(lián)網(wǎng)。

      POJO
      pure old java object
      是普通java類,有一些private的參數(shù)作為對(duì)象的屬性,然后針對(duì)每一個(gè)參數(shù)定義get和set方法訪問(wèn)的接口。

      我看到這個(gè)定義,心里就有個(gè)疑問(wèn)了,這個(gè)POJO跟JavaBean的定義怎么就這么像??jī)烧哂惺裁磪^(qū)別?
      POJO其實(shí)是比javabean更純凈的簡(jiǎn)單類或接口。POJO嚴(yán)格地遵守簡(jiǎn)單對(duì)象的概念,而一些JavaBean中往往會(huì)封裝一些簡(jiǎn)單邏輯。

      JavaBean是一種JAVA語(yǔ)言寫成的可重用組件。它的方法命名,構(gòu)造及行為必須符合特定的約定:
      1.這個(gè)類必須有一個(gè)公共的缺省構(gòu)造函數(shù)。
      2.這個(gè)類的屬性使用getter和setter來(lái)訪問(wèn),其他方法遵從標(biāo)準(zhǔn)命名規(guī)范。
      3.這個(gè)類應(yīng)是可序列化的。
      簡(jiǎn)而言之,當(dāng)一個(gè)POJO可序列化,有一個(gè)無(wú)參的構(gòu)造函數(shù),使用getter和setter方法來(lái)訪問(wèn)屬性時(shí),它就是一個(gè)JavaBean。

      可能有些人不明白什么是可序列化,可以看我另一篇博客http://my.oschina.net/pacoyang/blog/151649

      DAO(data access objects
      DAO是數(shù)據(jù)訪問(wèn)對(duì)象,DAO一般有接口和該接口的實(shí)現(xiàn)類,接口用于規(guī)范實(shí)現(xiàn)類。實(shí)現(xiàn)類一般用于操作數(shù)據(jù)庫(kù),如對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改、添加、刪除等操作,一般直接調(diào)用公共類DAO。 

      什么是DTO(data transfer object)、什么是VO(value object)、什么是PO(persistent object)?
      我們通過(guò)DAOPOJO持久化為PO,用PO組裝出來(lái)VODTO

      總結(jié)下,我認(rèn)為一個(gè)對(duì)象究竟是什么O要看具體環(huán)境,在不同的層、不同的應(yīng)用場(chǎng)合,對(duì)象的身份也不一樣,而且對(duì)象身份的轉(zhuǎn)化也是很自然的。就像你對(duì)老婆來(lái)說(shuō)就是老公,對(duì)父母來(lái)說(shuō)就是子女。設(shè)計(jì)這些概念的初衷不是為了唬人而是為了更好的理解和處理各種邏輯,讓大家能更好的去用面向?qū)ο蟮姆绞教幚韱?wèn)題。

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

      什么是BO(business object)?

      BO: POJO在業(yè)務(wù)層的體現(xiàn),對(duì)于業(yè)務(wù)操作來(lái)說(shuō),更多的是從業(yè)務(wù)上來(lái)包裝對(duì)象,如一個(gè)User的BO,可能包括name, age, sex, privilege, group等,這些屬性在數(shù)據(jù)庫(kù)中可能會(huì)在多張表中,因?yàn)槊恳粡埍韺?duì)應(yīng)一個(gè)PO,而我們的BO需要這些PO組合起來(lái)(或說(shuō)重新拼裝)才能成為業(yè)務(wù)上的一個(gè)完整對(duì)象。

      EJB

      EJB(Enterprise JavaBean): 我認(rèn)為它是一組"功能"JavaBean的集合。上面說(shuō)了JavaBean是實(shí)現(xiàn)了一種規(guī)范的Java對(duì)象。這里說(shuō)EJB是一組JavaBean,的意思是這一組JavaBean組合起來(lái)實(shí)現(xiàn)了某個(gè)企業(yè)組的業(yè)務(wù)邏輯。這里的一組JavaBean不是亂組合的,它們要滿足能實(shí)現(xiàn)某項(xiàng)業(yè)務(wù)功能的搭配。找個(gè)比方,對(duì)于一身穿著來(lái)說(shuō),包括一頂帽子,一件衣服,一條褲子,兩只鞋。這穿著就是EJB,其它的就是一個(gè)JavaBean

      SSH與EJB區(qū)別

      EJB是一種javabean的組合規(guī)范,SSH是3個(gè)框架jar包的組合。

      EJB本身是JavaEE的規(guī)范由容器廠商負(fù)責(zé)實(shí)現(xiàn),也就是使用EJB,需要使用JavaEE服務(wù)器。而用SSH,直接用Web服務(wù)器, SSH中要解決的目標(biāo)和EJB是一致的。EJB是大型的,SSH是輕量級(jí)的。


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多