Data Transfer Objectってなに。
オブジェクト設計(デザイン)パターンらしい。
データベースからとってきた値を別クラスで別オブジェクトとして、クライアント用に加工するためのクラス・オブジェクトというイメージ。
①セキュリティのため
持ってきたデータの中で必要なデータだけを抽出したい
ん?なら持ってくるなよ?まともにsqlを書かなくなってきている昨今では、有効。
②クライアントが欲しいデータを同じクラスにもつ
データベースから抽出したデータだけでクライアントに渡すだけなら、問題ないが、例えば、そのデータを別の型にしたかったり、別のクラスのプロパティもひとまとめにしたり、するのに便利?
そのほかにもあるだろうが、一旦ここまでにして、下記の動画が一番腑に落ちたので紹介したい。
C#での実装の動画はこちら。
C# Web App Activity 5b Code a DTO Data Transfer Object - YouTube
日本語で探していたほかのどの記事たちも理解しやすかった。
DAO、エンティティ、DTOの関係が分かりにくかったり、ごっちゃになったりしてる感じ。自分も当たっているかわからないが。というか自分も知りたくてぐぐりまくってた。
DAO→データベースへのアクセスを疎結合にし、簡略化?
↓↑
エンティティ→データベースのデータをクライアントで持つ
↓↑
DTO→エンティティのデータを見せるように加工
今のところこんなイメージ。