?
DTO,Data Transfer Object.在以前的開發探討中,我曾經認為DTO必須和PO(持久化對象)劃清界線,要單獨構建類.
?
從分層開發講,DTO負責層間的數據傳遞,是必不可少的,但實際開發經驗告訴我,大量的只有屬性的DTO對象的存在,雖然把開發分層的清清楚楚,
然而這些DTO類卻又的確貧血,不但使代碼量急劇增加,而且隨著數量的增大,DTO的類命名和屬性命名也會難以規范.
?
其實象Hibernate這樣的持久化框架,其PO已經是足夠簡單的POJO對象,可以設法利用其PO類構建DTO使用.請注意雖然這么做了,但從概念上DTO和PO仍然屬于不同層,后者才是操作數據庫的.
?
以前就有人這么嘗試過,不過會遇到一個問題:就是在進行DTO到PO的屬性拷貝時,無法區分哪些屬性需要拷貝,哪些不需要.
?
這個問題其實可以解決的,用PO類構造DTO時,我們可以先對DTO的所有屬性設置無用的初始值,然后再針對部分屬性設置進前臺傳遞的業務數據,這樣就構造好了一個DTO對象了.在進行DTO到PO的屬性拷貝時,可略過那些帶無用初始值的屬性,只拷貝帶業務數據的屬性.
?
使用了PO類來構造DTO,使我現在項目的代碼精簡了很多.