DTO(領域數據傳輸對象)之我見

一、DTO的產生及優點
最初,我們設計程序的時候直接創建實體類,然後再創建一個封裝返回值的jsonObject類,進行業務處理的時候直接利用實體類傳遞數據,然後封裝在jsonObject類裏面返回,這樣的話就存在以下幾個問題:
(1)暴露數據庫表結構
如果黑客通過前端的json對象解析出來了你的表結構,然後就可以結合表結構和請求命令模擬發送攻擊請求竊取你的信息。
(2)後臺處理僵硬
比方說我要根據用戶名查詢這個用戶是否存在,同時還要根據用戶名、訂單時間、訂單狀態等等好多信息查詢該用戶的特定訂單。這個時候如果只有一個實體類,那麼查詢用戶存在與否就需要額外注入好多信息,相反,如果我們有DTO類則可以有選擇的進行屬性值複製與查詢。
(3)前後臺解耦
有了DTO類就可以讓DTO類跟前端顯示界面對接,而實體類跟數據庫表對接,這樣前端更改的時候就不需要更改後端實體類,同樣後端需要增加業務邏輯而不改變前端顯示的時候也不用更改DTO對象。
二、設計方式
(1)根據前端顯示需求建立DTO類
(2)根據數據庫表建立實體類
(3)創建數據傳輸工具類(假設從from類將屬性賦值到to類中)
在這個類裏面,可以通過反射獲取DTO類和實體類的方法,然後遍歷查找from對象getter方法的返回值和to對象setter方法參數相同的方法,回調from類的get方法獲取屬性值,然後將此屬性值通過回調函數賦值給to對象。
三、應用場景
主要用於遠程調用等需要大量傳輸對象的地方。
比如我們一張表有100個字段,那麼對應的PO就有100個屬性。
但是我們界面上只要顯示10個字段,
客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,
這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以後,如果用這個對象來對應界面顯示,那此時它的身份就轉爲VO

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章