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