• ベストアンサー

DTOとEntityの差は何ですか。

dtoとentityは DBと同じ名前と形式を持っているはずですね。 でも名前も違うし。。差異は何ですか。。。

質問者が選んだベストアンサー

  • ベストアンサー
  • ecogilis
  • ベストアンサー率60% (12/20)
回答No.2

Entityを、Entity Beanとか、DBのテーブルとか、と解釈します。 DTOをData Transfer Objectのデザインパターンと解釈します。 自分なりの解釈ですが。。。 Entityは、データレコードを表現するクラスのことで、DTOは、EntityBeanとかのデータをAPの都合の良い形でモジュール間でやりとりするためのクラス設計方法の一つと思います。 例えば、複数のデータソースからデータを取得してそれらを最終的なUI上に表現したいとした場合、画面構築の際にデータソースそれぞれに都度取得要求しつつ画面構築するよりかは、一度DTOにまとめてから画面構築したほうが設計上も綺麗ですしソースもシンプルになると思います。 パフォーマンスの面で言えば、例えば、データソースを扱う複数のサーバ(DBとか)とAPサーバとフロントエンドのAP(UI)が動作するクライアントPCといった構成で、クライアントからAPサーバを介してデータソースにデータ要求をしたいとした場合、データソース別に都度ネットワーク越しにデータの要求とレスポンスを繰り返すよりかは、APサーバでDTOにまとめてから、一括でやりとりしたほうがパフォーマンス的には良いと思います。もちろん呼び出す側でもそれを意識した呼び出しが必要だと思いますけど。 「DBと同じ名前と形式を持っているはず」というのがそもそも認識誤りなのじゃないかなと思ってるんですけど、どうでしょ。

その他の回答 (1)

  • thamansa
  • ベストアンサー率40% (95/232)
回答No.1

Data Transfer Object と Entity の語源から考えると 違うような違わないような、よくわからない(無知)んですが、 私は Entity:データベースのレコードをそのまんま格納する。 DTO:入力フォームなどのデータなど、アプリ内でやりとりするデータを格納する。DBに保存されるとは限らない。 と認識しています。 DTOをそのままEntityとして使う場合も多いので、混同されているのでしょう。

関連するQ&A