エンティティとDTOという対比

くーす/goyaを意識しながらJSF/S2JSFをいじっていてやはり思うのが、エンティティとDTOの違いって?ということです。

(ローカル)DTOというのは層またがりの場合に情報を受け渡しするために導入するものですが、くーすの文脈では、「DTO=プレゼンテーションモデル」ということで使われているようです。
どうもそこに違和感を感じてしまうようです。

僕の貧弱な理解では、

  • レイヤ間をまたいで情報を伝えるという役割を担うのがDTO
  • インピーダンスミスマッチを吸収し、また、仕様変更に対する防壁になるように、という目的で、プレゼンテーション層で利用されるのがプレゼンテーションモデル

です。

エンティティ(ドメインモデル)と対比すべき概念はプレゼンテーションモデルであるのに、これをDTOという名前に置き換えてしまうことで、(僕の^^:)混乱が助長されているのではないかと。

エンティティを層またがりで使ったときはなんて呼ぶのかって。

といわけで、個人的にはくーす/goya的な設計手法に従う場合でも、素直にプレゼンテーションモデル、ドメインモデル、という表現を使うようにしてみようと思います。