為什麼需要DTO(資料傳輸物件)
DTO即資料傳輸物件。之前不明白有些框架中為什麼要專門定義DTO來繫結表現層中的資料,為什麼不能直接用實體模型呢,有了DTO同時還要維護DTO與Model之間的對映關係,多麻煩。
然後看了這篇文章中的討論部分才恍然大悟。
摘兩個比較有意義的段落。
表現層與應用層之間是通過資料傳輸物件(DTO)進行互動的,資料傳輸物件是沒有行為的POCO物件,它 的目的只是為了對領域物件進行資料封裝,實現層與層之間的資料傳遞。為何不能直接將領域物件用於 資料傳遞?因為領域物件更注重領域,而DTO更注重資料。不僅如此,由於“富領域模型”的特點,這樣 做會直接將領域物件的行為暴露給表現層。
需要了解的是,資料傳輸物件DTO本身並不是業務物件。資料傳輸物件是根據UI的需求進行設計的,而不 是根據領域物件進行設計的。比如,Customer領域物件可能會包含一些諸如FirstName, LastName, Email, Address等資訊。但如果UI上不打算顯示Address的資訊,那麼CustomerDTO中也無需包含這個 Address的資料
簡單來說Model面向業務,我們是通過業務來定義Model的。而DTO是面向介面UI,是通過UI的需求來定義的。通過DTO我們實現了表現層與Model之間的解耦,表現層不引用Model,如果開發過程中我們的模型改變了,而介面沒變,我們就只需要改Model而不需要去改表現層中的東西。
本文轉自左正部落格園部落格,原文連結:http://www.cnblogs.com/soundcode/p/4766464.html,如需轉載請自行聯絡原作者
相關文章
- 簡化Java資料傳輸物件DTO:DTO-Free JavaJava物件
- VO(檢視模型) 與 DTO(資料傳輸物件)的區別模型物件
- 工作這麼多年,我總結的資料傳輸物件 (DTO) 的最佳實踐物件
- 為什麼需要資料治理
- 跨國大檔案傳輸需要哪些方面?怎麼實現資料快速傳輸?
- 資料跨境流動需要注意什麼?怎麼實現安全合規的跨境傳輸?
- USB 控制寫傳輸、控制讀傳輸、無資料控制傳輸都是在什麼場景下?
- 為什麼Java需要物件的序列化Java物件
- ajax為什麼需要json格式響應資料?JSON
- 資料湖架構,為什麼需要“湖加速”?架構
- 為什麼我們需要資料庫事務資料庫
- 資料血緣系列(1)—— 為什麼需要資料血緣?
- 為什麼檔案傳輸軟體總讓資料“沒有安全感”?
- 為什麼醫療保健需要MFT來幫助保護EHR檔案傳輸
- 深度學習為什麼需要那麼多的資料?深度學習
- 什麼是高延遲檔案傳輸?為什麼要使用高延遲檔案傳輸
- 鐳速傳輸:保護企業資料傳輸和檔案傳輸的最佳解決方案是什麼?
- 利用實體bean物件批量資料傳輸處理Bean物件
- USB和CAN都是用差分訊號來傳輸資料,為什麼CAN的傳輸距離能比USB遠那麼多?
- 為什麼DBA需要資料庫廠商的資料庫概念文件資料庫
- 資料庫產業為什麼需要規模效應資料庫產業
- 為什麼公司需要專業的測試資料管理?
- 醫學影像AI為什麼需要小資料學習?AI
- 網路資料傳輸時作業系統幹了什麼?作業系統
- 為什麼需要Docker?Docker
- 如何透過Hibernate/JPA的SqlResultSetMapping生成需要資料的DTO?SQLAPP
- 後設資料管理為什麼需要統一的元模型?模型
- 傳統IDC為什麼需要配備智慧管理系統?
- 保險行業需要一個安全的大資料傳輸行業大資料
- 大資料能做什麼,為什麼學大資料大資料
- 日本PSE認證需要什麼資料
- 為什麼需要拆分NFT?
- 大資料時代,為什麼還需要客戶之聲(VOC)?大資料
- ios ipa包上傳需要什麼工具iOS
- 什麼是安全檔案傳輸?
- 大資料開發需要學習什麼?大資料平臺是什麼?大資料
- nodejs 介面傳輸資料NodeJS
- iOS資料傳輸工具iOS
- Elasticsearch:是什麼?你為什麼需要他?Elasticsearch