DAOとRepositoryの違いを徹底解説!初心者にもわかるポイント整理

  • このエントリーをはてなブックマークに追加
DAOとRepositoryの違いを徹底解説!初心者にもわかるポイント整理
この記事を書いた人

中嶋悟

名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝


DAOとRepositoryの違いをわかりやすく解説する

DAOはData Access Objectの略で、データベースや他のデータストアとやり取りする窓口を作る設計パターンです。つまり、実際のSQLを発行したり、データの変換を担当する役割を担います。対してRepositoryは別の考え方で、ドメイン(私たちが表現したい現実世界の概念)を扱う集合のような振る舞いを提供します。Repositoryは「この型のオブジェクトを集めて、取得・追加・削除する」といった操作を、ドメインの文脈で扱えるようにします。実際のコードでは、Repositoryは内部でDAOを使ってデータを取り出すことが多いですが、外部に対しては直接データベース操作を公開しません。つまり、DAOはデータのアクセス方法そのものを扱い、Repositoryはドメインの観点でデータを扱う方法を提供すると覚えると混乱を減らせます。ユースケースを考えると、例えば「ユーザー情報を扱う場合」、DAOは「データベースのテーブルと列を直接操作する窓口」です。これに対してRepositoryは「ユーザー」というドメインの概念を扱い、ビジネス上の検索条件や集約を意識した操作を提供します。これらの違いを知っておくと、あとでコードを読むときにも役立ちます。
実務での設計のコツとしては、責務を分けること。DAOはデータそのものの取得・保存・変換を担当し、Repositoryはドメインの振る舞いを表現する集合の入口となるよう心掛けるのが基本です。

  • DAOはデータストアと直接やり取りする窓口で、SQLの実行やデータの変換、接続の管理などを担当します。
  • Repositoryはドメインの視点でデータを扱う集合のインタフェースで、ビジネスロジックに合わせた操作を提供します。
  • DAOは低レベルのデータアクセス、Repositoryは高レベルの抽象で、両者は分担して設計するのが基本です。

実務での使い分けのコツと具体例

DDDの文脈で Repository はドメインの意思を表現するインタフェースとして用いられ、取得・保存の操作をビジネス用語で提供します。対して DAO はデータベースへ直接アクセスする低レベルの実装です。設計上のポイントは、インタフェースの命名と境界の明確さにあります。たとえば、"UserRepository" という名前のインタフェースは「ユーザーというドメインを扱う集合の操作」を定義し、具体的なデータベース操作は裏側の DAO が受け持つようにします。実装では、DAO は SQL や ORM の露出部分を隠し、Repository は「FindById」「FindAll」「Add」など、ドメインの語彙で機能を定義します。こうすると、データベースを変更しても Repository の呼び出し方は変わらず、ビジネスロジックは安定します。さらに、テストの観点でも、Repository をモックすることでドメインの挙動を検証しやすくなり、DAO をモックする必要性は減ります。
この区分を実務に落とすときの実例として、テスト環境を整える際に「DAOはスタブ化してDB接続を模倣する」「Repositoryはモックしてビジネスロジックのみを検証する」という手順を採ると、エンジニアが増えても保守が楽になります。

able>用語役割DAOデータストアへ直接アクセスする窓口。SQLの実行やデータ変換を担う。Repositoryドメインの視点でデータを扱う集合のインタフェース。ビジネスロジックに合わせた操作を提供。
ピックアップ解説

友だちと雑談している雰囲気でいうと、DAOはコンピュータの“データベースへ直接行く窓口”みたいな存在。SQLの実行やデータの変換を実際に動かす役割だよ。一方、Repositoryはその上にある“本棚”のような役割で、私たちのドメイン(例えば『ユーザー』という概念)を扱うための集合的操作を提供する。DAOがデータの事実を扱うのに対して、Repositoryはビジネスの言葉でデータを扱えるようにする。設計を分けておくと、後でデータベースを別のものに変えるときにもRepositoryの呼び出し方は変わらず、ビジネスロジックは安定して動き続けるよ。


ITの人気記事

ズームとズームワークプレイスの違いとは?初心者でもわかる徹底解説!
937viws
青写真と青焼きの違いとは?簡単解説でわかりやすく理解しよう!
807viws
「画素(ピクセル)とは何?解説と画像の違いをやさしく理解しよう」
688viws
CADデータとDXFデータの違いを徹底解説!初心者でもわかる使い分けのポイント
497viws
スター結線とデルタ結線の違いを徹底解説!初心者でも分かる電気の基本
489viws
HTTPとHTTPSの違いをわかりやすく解説!安全なネット利用のために知っておきたいポイント
442viws
IPアドレスとデフォルトゲートウェイの違いをわかりやすく解説!ネットワークの基本を理解しよう
377viws
インプレッション数とクリック数の違いを徹底解説 — CTRを上げるための基礎と落とし穴
376viws
モバイルデータ通信番号と電話番号の違いを徹底解説!初心者でもわかるスマホの基礎知識
372viws
API仕様書とIF仕様書の違いを徹底解説!初心者でもわかるポイントとは?
354viws
SSDとUSBメモリの違いを徹底解説!初心者でもわかる保存デバイスの選び方
342viws
RGBとVGAの違いを徹底解説!初心者にもわかりやすい映像信号の基礎知識
340viws
RGBとsRGBの違いって何?初心者でもわかる色の基本知識
337viws
インターフォンとインターホンの違いって何?わかりやすく解説!
312viws
USB充電器とアダプターの違いとは?初心者にもわかりやすく解説!
305viws
グロメットとコンジットの違いとは?わかりやすく解説!
298viws
5GとXi(クロッシィ)ってどう違うの?初心者にもわかりやすく解説!
291viws
通信線と電力線の違いとは?意外と知らない基本ポイントを徹底解説!
277viws
UPSと非常用電源の違いとは?初心者でもわかる電源設備の基礎知識
273viws
【保存版】webサイト名とページタイトルの違いとは?初心者でも簡単にわかる解説
263viws

新着記事

ITの関連記事