1. 程式人生 > >為什麽我們需要DTO?

為什麽我們需要DTO?

res set setter lock 交互 文件 之間 好的 數據封裝

最近在寫代碼時突然產生了這個疑惑,我們為什麽需要DTO進行數據傳輸呢?

要了解DTO首先我們要知道什麽是DAO,DAO就是數據庫的一個數據模型,是一個類文件裏面存儲著數據庫的字段及其getter&setter方法、tostring方法、或者重寫的構造方法。我們寫代碼時會對DAO進行一系列CURD原子性操作,表面上來看我們是對數據庫進行操作,其實我們是先在程序裏對DAO操作然後再通過jdbc提交到數據庫,由數據庫執行相應的編譯好的SQL語句。

我先簡單介紹一下什麽是DTO,DTO(Data Transfer Object )就是數據傳輸對象。是設計模式中用來進行數據傳輸的。DTO只作為數據的存儲不會與實際業務發生任何聯系。

以下摘抄感覺解釋的比較通透的兩句話:

表現層與應用層之間是通過數據傳輸對象(DTO)進行交互的,數據傳輸對象是沒有行為的POCO對象,它 的目的只是為了對領域對象進行數據封裝,實現層與層之間的數據傳遞。為何不能直接將領域對象用於 數據傳遞?因為領域對象更註重領域,而DTO更註重數據。不僅如此,由於“富領域模型”的特點,這樣 做會直接將領域對象的行為暴露給表現層。

需要了解的是,數據傳輸對象DTO本身並不是業務對象。數據傳輸對象是根據UI的需求進行設計的,而不 是根據領域對象進行設計的。比如,Customer領域對象可能會包含一些諸如FirstName, LastName, Email, Address等信息。但如果UI上不打算顯示Address的信息,那麽CustomerDTO中也無需包含這個 Address的數據。

說白了就是面向業務用DAO,DTO只是用來面向UI的。只是作為數據存儲來使用,避免暴露表結構。解決不必要的安全隱患。通過DTO實現了表現層與model的解耦,如果在開發過程中我們的模型變了而界面沒變那麽我們就無需更改表現層只改動model就可以了。

為什麽我們需要DTO?