DTO(领域数据传输对象)是做什么的
一、DTO的產(chǎn)生及優(yōu)點
最初,我們設(shè)計程序的時候直接創(chuàng)建實體類,然后再創(chuàng)建一個封裝返回值的jsonObject類,進(jìn)行業(yè)務(wù)處理的時候直接利用實體類傳遞數(shù)據(jù),然后封裝在jsonObject類里面返回,這樣的話就存在以下幾個問題:
(1)暴露數(shù)據(jù)庫表結(jié)構(gòu)
如果黑客通過前端的json對象解析出來了你的表結(jié)構(gòu),然后就可以結(jié)合表結(jié)構(gòu)和請求命令模擬發(fā)送攻擊請求竊取你的信息。
(2)后臺處理僵硬
比方說我要根據(jù)用戶名查詢這個用戶是否存在,同時還要根據(jù)用戶名、訂單時間、訂單狀態(tài)等等好多信息查詢該用戶的特定訂單。這個時候如果只有一個實體類,那么查詢用戶存在與否就需要額外注入好多信息,相反,如果我們有DTO類則可以有選擇的進(jìn)行屬性值復(fù)制與查詢。
(3)前后臺解耦
有了DTO類就可以讓DTO類跟前端顯示界面對接,而實體類跟數(shù)據(jù)庫表對接,這樣前端更改的時候就不需要更改后端實體類,同樣后端需要增加業(yè)務(wù)邏輯而不改變前端顯示的時候也不用更改DTO對象。
二、設(shè)計方式
在這個類里面,可以通過反射獲取DTO類和實體類的方法,然后遍歷查找from對象getter方法的返回值和to對象setter方法參數(shù)相同的方法,回調(diào)from類的get方法獲取屬性值,然后將此屬性值通過回調(diào)函數(shù)賦值給to對象。
三、應(yīng)用場景
主要用于遠(yuǎn)程調(diào)用等需要大量傳輸對象的地方。
比如我們一張表有100個字段,那么對應(yīng)的PO就有100個屬性。
但是我們界面上只要顯示10個字段,
客戶端用WEB service來獲取數(shù)據(jù),沒有必要把整個PO對象傳遞到客戶端,
這時我們就可以用只有這10個屬性的DTO來傳遞結(jié)果到客戶端,這樣也不會暴露服務(wù)端表結(jié)構(gòu).到達(dá)客戶端以后,如果用這個對象來對應(yīng)界面顯示,那此時它的身份就轉(zhuǎn)為VO
簡單來說:用戶界面端——>VO——>DTO——>DO——>數(shù)據(jù)庫
總結(jié)
以上是生活随笔為你收集整理的DTO(领域数据传输对象)是做什么的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ParseObject 的使用简介【简单
- 下一篇: IDEA中创建类时,自动在文件头中添加作