java java項(xiàng)目中VO和DTO以及Entity,各自是在什么情況下應(yīng)用的?
java項(xiàng)目中VO和DTO以及Entity,各自是在什么情況下應(yīng)用的?您好,根據(jù)標(biāo)準(zhǔn):1。實(shí)體中的每個(gè)字段都對(duì)應(yīng)于數(shù)據(jù)庫(kù),2。dto中的每個(gè)字段都對(duì)應(yīng)于前景頁(yè),3。VO,用于從實(shí)體到dto或從dto到
java項(xiàng)目中VO和DTO以及Entity,各自是在什么情況下應(yīng)用的?
您好,根據(jù)標(biāo)準(zhǔn):
1。實(shí)體中的每個(gè)字段都對(duì)應(yīng)于數(shù)據(jù)庫(kù),
2。dto中的每個(gè)字段都對(duì)應(yīng)于前景頁(yè),
3。VO,用于從實(shí)體到dto或從dto到實(shí)體的轉(zhuǎn)換。
例如:
您的HTML頁(yè)面上有三個(gè)字段,name,pass,age
您的數(shù)據(jù)庫(kù)表中有兩個(gè)字段name,pass
在您的dto中,應(yīng)該有以下三個(gè)字段(因?yàn)樗鼈儗?duì)應(yīng)于HTML頁(yè)面上的三個(gè)字段)
private string name;
private string pass
private string此時(shí),實(shí)體中應(yīng)該有兩個(gè)字段(因?yàn)樗鼈儗?duì)應(yīng)于數(shù)據(jù)庫(kù)表中的兩個(gè)字段)
private string name;
private string[pass
在這里。好吧,業(yè)務(wù)經(jīng)理讓你做這樣的生意。只有20歲以上的人才可以存儲(chǔ)在數(shù)據(jù)庫(kù)中
]此時(shí),您需要使用VO
您需要先從頁(yè)面中獲取dto,然后判斷dto中的年齡是否大于20歲。如果大于20,則取出
name并傳入dto,放入VO中,然后交給不懂name和傳入VO Entity原始印章的人,然后根據(jù)
Entity的值,PS、VO和Entity中的字段應(yīng)該相同。VO只是從實(shí)體到dto,或者從dto到實(shí)體的中間過(guò)程。如果沒(méi)有這樣的流程,您仍然可以添加、刪除、修改和查詢。這是基于特定的公司,
vo bo po分別代表什么?
VO(值對(duì)象)值對(duì)象它通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳輸。和Po一樣,它只包含數(shù)據(jù)。但它應(yīng)該是一個(gè)抽象的業(yè)務(wù)對(duì)象,根據(jù)業(yè)務(wù)的需要,可以對(duì)應(yīng)表,也可以不對(duì)應(yīng)表。我覺(jué)得它和dto(數(shù)據(jù)傳輸對(duì)象)一樣,可以在網(wǎng)上傳輸。從業(yè)務(wù)模型的角度來(lái)看,請(qǐng)參見(jiàn)UML組件域模型中的域?qū)ο蟆ava對(duì)象封裝業(yè)務(wù)邏輯,通過(guò)調(diào)用Dao方法,結(jié)合Po、VO進(jìn)行業(yè)務(wù)操作。Po(persistent object)persistent object的概念出現(xiàn)在O/R映射過(guò)程中。如果沒(méi)有o/R映射,就沒(méi)有這樣的概念。通常對(duì)應(yīng)于數(shù)據(jù)模型(數(shù)據(jù)庫(kù)),有部分業(yè)務(wù)邏輯處理。它可以看作是映射到數(shù)據(jù)庫(kù)中表的Java對(duì)象。最簡(jiǎn)單的Po是對(duì)應(yīng)數(shù)據(jù)庫(kù)表中的一條記錄。多條記錄可以使用采購(gòu)訂單的集合。采購(gòu)訂單不應(yīng)包含對(duì)數(shù)據(jù)庫(kù)的任何操作。
VO是什么?
1、Po:持久對(duì)象持久對(duì)象可以看作映射到數(shù)據(jù)庫(kù)中表的Java對(duì)象。使用hibernate生成Po是一個(gè)不錯(cuò)的選擇。2、 Vo:值對(duì)象值對(duì)象。它通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳輸。和Po一樣,它只包含數(shù)據(jù)。但它應(yīng)該是一個(gè)抽象的業(yè)務(wù)對(duì)象,根據(jù)業(yè)務(wù)的需要,可以對(duì)應(yīng)表,也可以不對(duì)應(yīng)表。有觀點(diǎn)認(rèn)為,Po只能在數(shù)據(jù)層使用,VO只能在業(yè)務(wù)邏輯層和表示層使用。每一層的操作都屬于自己的數(shù)據(jù)對(duì)象,可以減少層與層之間的耦合,便于將來(lái)系統(tǒng)的維護(hù)和擴(kuò)展。如果在各個(gè)層中使用Po,則相當(dāng)于使用全局變量。我們知道在OO設(shè)計(jì)中,我們強(qiáng)烈反對(duì)使用全局變量。但每次我們都要做vo-po轉(zhuǎn)換,真的很無(wú)聊。我認(rèn)為有時(shí)Po可以用于某個(gè)業(yè)務(wù)邏輯或表示層。此時(shí),采購(gòu)訂單的狀態(tài)在業(yè)務(wù)邏輯的過(guò)程中不會(huì)發(fā)生變化,例如顯示物料詳細(xì)信息的業(yè)務(wù)邏輯。在已開(kāi)發(fā)的項(xiàng)目中,規(guī)模很小。我總是用Po作為VO,因?yàn)镻o非常方便。結(jié)合hibernatedao,使用Java集合對(duì)象作為值傳遞的載體。當(dāng)然,struts也是我最好的選擇。