2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

java項(xiàng)目中VO和DTO以及Entity,各自是在什么情況下應(yīng)用的

 liang1234_ 2019-12-13
j2ee中,經(jīng)常提到幾種對(duì)象(object),理解他們的含義有助于我們更好的理解面向?qū)ο蟮脑O(shè)計(jì)思維。
    POJO(plain old java object):普通的java對(duì)象,有別于特殊的java對(duì)象(含繼承約束等)和EJB。POJO一般只有一系列的屬性和相應(yīng)的get、set方法。
    PO(persistant object):持久化對(duì)象,有別于POJO,必須對(duì)應(yīng)數(shù)據(jù)庫中的實(shí)體。一個(gè)PO對(duì)應(yīng)數(shù)據(jù)庫的一條記錄。持久化對(duì)象的生命周期與數(shù)據(jù)庫密切相關(guān),只能存在于connection之中,連接關(guān)閉后,PO就消失了。
    PO相對(duì)于POJO有諸多不同,比如PO中會(huì)有保存數(shù)據(jù)庫entity狀態(tài)的屬性和方法。但是ORM(object-relation mapping)追求的目標(biāo)是PO和POJO的一致,所以在程序員的日常開發(fā)中,都是將POJO作為PO使用,而將POJO轉(zhuǎn)化為PO的功能交給hibernate等框架來實(shí)現(xiàn)。
    DTO(data transfer object):數(shù)據(jù)傳輸對(duì)象,以前被稱為值對(duì)象(VO,value object),作用僅在于在應(yīng)用程序的各個(gè)子系統(tǒng)間傳輸數(shù)據(jù),在表現(xiàn)層展示。與POJO對(duì)應(yīng)一個(gè)數(shù)據(jù)庫實(shí)體不同,DTO并不對(duì)應(yīng)一個(gè)實(shí)體,可能僅存儲(chǔ)實(shí)體的部分屬性或加入符合傳輸需求的其他的屬性。
    DAO(data access object):數(shù)據(jù)訪問對(duì)象。提供訪問數(shù)據(jù)庫的抽象接口,或者持久化機(jī)制,而不暴露數(shù)據(jù)庫的內(nèi)部詳細(xì)信息。DAO提供從程序調(diào)用到持久層的匹配。
    BO(business object):業(yè)務(wù)對(duì)象。主要是將業(yè)務(wù)邏輯封裝為一個(gè)對(duì)象,該對(duì)象可以包含一個(gè)或多個(gè)其他對(duì)象。如,'Principal'(委托人),有'Name','Age'等屬性,同時(shí)和'Employee'(雇員)有1對(duì)多的關(guān)系,這個(gè)'Principal'就可以作為一個(gè)與業(yè)務(wù)相關(guān)的PO。

實(shí)踐小結(jié)

按照標(biāo)準(zhǔn)來說:
1、entity里的每一個(gè)字段,與數(shù)據(jù)庫相對(duì)應(yīng),
2、VO里的每一個(gè)字段,是和你前臺(tái)頁面相對(duì)應(yīng),
3、DTO,這是用來轉(zhuǎn)換從entity到dto,或者從dto到entity的中間的東西。
舉個(gè)例子:

你的html頁面上有三個(gè)字段,name,pass,age
你的數(shù)據(jù)庫表里,有兩個(gè)字段,name,pass(注意沒有age哦)而你的dto里,就應(yīng)該有下面三個(gè)(因?yàn)閷?duì)應(yīng)html頁面上三個(gè)字段嘛)
private string name;
private string pass;
private string age;
這個(gè)時(shí)候,你的entity里,就應(yīng)該有兩個(gè)(因?yàn)閷?duì)應(yīng)數(shù)據(jù)庫表中的2個(gè)字段嘛)
private string name;
private string pass;
到了這里,好了,業(yè)務(wù)經(jīng)理讓你做這樣一個(gè)業(yè)務(wù)“年齡大于20的才能存入數(shù)據(jù)庫”

這個(gè)時(shí)候,你就要用到vo了

你要先從頁面上拿到VO,然后判斷dto中的age是不是大于20,如果大于20,就把dto中的

name和pass拿出來,放到vo中,然后在把DTO中的name和pass原封不懂的給entity,然后根據(jù)

entity的值,在傳入數(shù)據(jù)庫,這就是他們?nèi)齻€(gè)的區(qū)別
PS,DTO和entity里面的字段應(yīng)該是一樣的,DTO只是entity到VO,或者VO到entity的中間過程,如果沒有這個(gè)過程,你仍然可以做到增刪改查。

    本站是提供個(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)論公約

    類似文章 更多