我們在后端的開發中經常會將DO對象傳到Service層直接作為DTO傳給前端,這樣做其實會有很多弊端。
(一)DO對象一般其成員域和數據庫字段是對應的,所以不能添加額外的字段,但是有時候端就是需要這個字段。反之前端要向后端傳一些額外的字段,DO也沒辦法接受,前端的Form表單不可能和數據庫共用同一套數據對象。
(二)DO可能是由框架控制生命周期的,比如hibernate,如果他的某個屬性是懶加載的,那萬一不在session中調用的話會拋出異常。而DTO對象很干凈,你可以自己控制DTO,喜歡就存在緩存里,不喜歡也沒關系。同時DO對象如果屬性變化的話會有是否需要同步更新數據庫的問題,而業務上DTO和DO并無關聯。