てぃぐれのプログラマwiki

ワクワクに従う

DTOとは【C#】

Data Transfer Objectってなに。

オブジェクト設計(デザイン)パターンらしい。

データベースからとってきた値を別クラスで別オブジェクトとして、クライアント用に加工するためのクラス・オブジェクトというイメージ。

 

①セキュリティのため

持ってきたデータの中で必要なデータだけを抽出したい

ん?なら持ってくるなよ?まともにsqlを書かなくなってきている昨今では、有効。

 

②クライアントが欲しいデータを同じクラスにもつ

データベースから抽出したデータだけでクライアントに渡すだけなら、問題ないが、例えば、そのデータを別の型にしたかったり、別のクラスのプロパティもひとまとめにしたり、するのに便利?

 

そのほかにもあるだろうが、一旦ここまでにして、下記の動画が一番腑に落ちたので紹介したい。

www.youtube.com

 

C#での実装の動画はこちら。

C# Web App Activity 5b Code a DTO Data Transfer Object - YouTube

 

日本語で探していたほかのどの記事たちも理解しやすかった。

DAO、エンティティ、DTOの関係が分かりにくかったり、ごっちゃになったりしてる感じ。自分も当たっているかわからないが。というか自分も知りたくてぐぐりまくってた。

 

DAO→データベースへのアクセスを疎結合にし、簡略化?

↓↑

エンティティ→データベースのデータをクライアントで持つ

↓↑

DTO→エンティティのデータを見せるように加工

 

今のところこんなイメージ。

 

tigretic.hatenablog.com