controller接收引數的物件是vo還是dto?,一直不太懂這些概念,大神賜教
uj5u.com熱心網友回復:
我也沒有深入了解過,就我使用情況來說的話,VO和DTO在實際開發程序中其實可以是一樣的。從定義上來說他們區別于使用的所在層,VO(view object)視圖物件,DTO(Data Transfer Object),資料傳輸物件; 至于你這里的controller接收引數要看是接收service的引數還是頁面傳遞過來的引數了,若是頁面傳遞的引數叫VO,service傳遞的引數叫DTO。。以上是我拙見,有什么錯誤的地方歡迎指出!
uj5u.com熱心網友回復:
傳vo, 因為controller本身就是和視圖層(view)打交道。要和頁面中的資料結構相同 更方便。dto是service與dao 資料持久層互動的。應該是這樣uj5u.com熱心網友回復:
我想問問,我新手哈,service和dao互動用的不是DO嗎?我用的是SSM框架。uj5u.com熱心網友回復:
表現層物件和業務處理層物件,盡量不要耦合太深。一般情況下,表現層傳過來的VO,會做一些簡單的校驗,然后封裝業務層需要的物件進行邏輯計算。
uj5u.com熱心網友回復:
應該傳的是vo 但是根據情況而定,尤其是前后分離,有特定的前端開發人員的時候。因為dto往往會添加很多額外的資料資訊,打個比方,用戶新增,往往前端傳遞的是賬戶名、密碼、創建人標示等等很少的資訊,但是dto作為一個中轉資料,會添加例如更新人、用戶狀態等等其他的資訊,如果前端傳遞的是dto,如此多的額外資訊會給前端造成很多問題。如果是小專案的話,前后端都是一個人在進行,那就無所謂了,后端需要哪些,不需要哪些心里有數,傳遞dto就無所謂了。 一般的資料轉換是,前端傳遞vo給介面,介面將vo轉為dto傳遞給service,service將dto分解為do,呼叫領域服務進行調度,然后逆向轉為vo或者其他的回傳結果,傳遞給前臺。
uj5u.com熱心網友回復:
controller 入參bo 出參vo 中間service層dto dao層entityuj5u.com熱心網友回復:
不同場景的叫法。uj5u.com熱心網友回復:
controller 入參bo 出參vo 中間service層dto dao層entity
為什么? BO全稱是什么呢?
uj5u.com熱心網友回復:
我想問問,我新手哈,service和dao互動用的不是DO嗎?我用的是SSM框架。
傳vo, 因為controller本身就是和視圖層(view)打交道。要和頁面中的資料結構相同 更方便。dto是service與dao 資料持久層互動的。應該是這樣
應該傳的是vo 但是根據情況而定,尤其是前后分離,有特定的前端開發人員的時候。因為dto往往會添加很多額外的資料資訊,打個比方,用戶新增,往往前端傳遞的是賬戶名、密碼、創建人標示等等很少的資訊,但是dto作為一個中轉資料,會添加例如更新人、用戶狀態等等其他的資訊,如果前端傳遞的是dto,如此多的額外資訊會給前端造成很多問題。如果是小專案的話,前后端都是一個人在進行,那就無所謂了,后端需要哪些,不需要哪些心里有數,傳遞dto就無所謂了。 一般的資料轉換是,前端傳遞vo給介面,介面將vo轉為dto傳遞給service,service將dto分解為do,呼叫領域服務進行調度,然后逆向轉為vo或者其他的回傳結果,傳遞給前臺。
有一個問題,前端傳過來的資料和要回傳的資料不一樣,那就要定義兩個VO,同時VO轉DTO一次,DTO轉DO一次,查詢完資料庫后DO轉DTO一次,DTO轉VO一次,DTO有可能還要定義多個,那么這樣是不是有點麻煩,有什么解決辦法嗎?謝謝。
uj5u.com熱心網友回復:
其實你說的VO和DTO是一個東西,是用作不同框架下針對控制器和頁面互動的物件的命名方式而已,沒有其他特殊含義,只是一個規范而已,你不這么命名也不影響代碼開發。uj5u.com熱心網友回復:
阿里巴巴編碼規約中列舉了下面幾個領域模型規約:DO(Data Object):與資料庫表結構一一對應,通過DAO層向上傳輸資料源物件。
DTO(Data Transfer Object):資料傳輸物件,Service或Manager向外傳輸的物件。
BO(Business Object):業務物件。由Service層輸出的封裝業務邏輯的物件。
AO(Application Object):應用物件。在Web層與Service層之間抽象的復用物件模型,極為貼近展示層,復用度不高。
VO(View Object):顯示層物件,通常是Web向模板渲染引擎層傳輸的物件。
詳細可參考原文:https://cloud.tencent.com/developer/article/1176367
uj5u.com熱心網友回復:
反正我們現在入參都是 dto ,回傳都是封裝的 BaseResult 類
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59185.html
標籤:Web 開發
上一篇:前端介面無法轉發到zuul
下一篇:Java運行以后出現問題,求修改
