私はそれがシンプルであることを望みます。DTO はシステムのネットワーク分散層が原因で発生しましたが、ドメイン オブジェクトがビュー レイヤーに返されると、問題が発生する可能性があります。それらのいくつかを次に示します。
1. ドメイン オブジェクトをビュー レイヤーに公開することにより、ビューはドメイン オブジェクトの構造を認識するようになり、ビューは関連するオブジェクトがどのように利用できるかについていくつかの仮定を立てることができます。たとえば、ドメイン オブジェクト「Person」が「バインド」されているビューに返され、他のビューで Person の「Address」がバインドされる場合、アプリケーション層は次のようなセマンティックを使用する傾向があります。その時点でアドレスドメインオブジェクトがロードされていない可能性があるため、 person.getAddresse() は失敗します。基本的に、ドメイン オブジェクトがビュー レイヤーで使用できるようになると、ビューはデータがどのように使用可能になるかについて常に仮定を立てることができます。
2.) ドメイン オブジェクトがビューにバインドされている場合 (シック クライアントではさらにそうです)、ビュー中心のロジックがこれらのオブジェクト内に忍び込み、オブジェクトを論理的に破損させる傾向が常にあります。
基本的に私の経験から、ドメイン オブジェクトをビューで使用できるようにするとアーキテクチャ上の問題が発生することがわかりましたが、DTO を使用するとアセンブラー (ドメイン オブジェクトへの DTO とその逆) の作成に関して追加の作業が発生するため、DTO の使用にも問題があります。患者ドメイン オブジェクト、患者 DTO、およびおそらくビューにバインドされた患者 Bean などの類似オブジェクト。
特にシック クライアント システムでは、明らかにこれに対する正しい答えはありません。
DTO の決まり文句に対するこの短い完全ではないが真の回答をhttp://www.theserverside.com/discussions/thread.tss?thread_id=32389#160505から借りました。