0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DTOとは】

Last updated at Posted at 2025-06-10

DTO(Data Transfer Object)

エンティティの中から必要な値だけを取得したクラス。データを転送する目的で定義されるクラス
だからエンティティの中に例えば、ユーザーエンティティの中に電話番号、氏名、住所、年齢が定義されてて、その中の氏名と年齢だけ使いたいのに、ユーザーごと呼び出したら、いらない電話番号とか住所も取得しちゃう。そうすると処理が重くなるから必要なものだけ欲しい…。そんな時DTOクラスを作れば、氏名と年齢の情報だけ取ってこれる的なイメージ。

DAO(Data Access Objec)

データベースなどから「情報を取り出したり、更新したりするための専用のクラス」
リポジトリクラスの子分みたいなやつ。

DAOとDTOを「おもちゃ箱」で例えると…

・DAOは「おもちゃ箱の管理人」みたいなもの! → おもちゃ(データ)がたくさん入っているけど、どれを取り出すか決めて、箱から出し入れする役割だよ。
・DTOは「持ち運び用のおもちゃセット」みたいなもの! → おもちゃ箱にはいろんな種類のおもちゃがあるけど、外で遊ぶときは全部持って行くのは大変だから、遊びたいものだけを小さなバッグに入れる感じ。

つまり、DAOがデータを取り出す仕事をして、DTOが「必要なデータだけ運ぶためのバッグ」になる。

DAOとリポジトリは何が違うの?

DAOとリポジトリ(Repository)は似ているけど、考え方がちょっと違う。
・DAO(データベース専用の管理人) → 「データベースとのやり取りに特化」した人。例えば、SQLを使って「このデータを取ってきて!」って指示する役割。
・リポジトリ(より広い管理人) → DAOを使いながら「データの管理を全般的にする」人。データベースだけじゃなくて、外部APIやキャッシュなども含めて、より抽象的にデータを取り扱う。つまりDAOより偉い人。
簡単に言、 DAOは「データベースのプロ」、リポジトリは「データ全体の管理者」! リポジトリはDAOを使うことが多いけど、DAOより広い範囲を管理する

下記サイトを参考にしました
4.2 DAO/DTOパターン | 神田ITスクール
DAO,DTO,Entity, findAll, findByld - Qiita

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?