質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

デザインパターン

デザインパターンは、ソフトウェアのデザインでよく起きる問題に対して、解決策をノウハウとして蓄積し再利用出来るようにした設計パターンを指します。

Q&A

3回答

4176閲覧

PofEAAのRepositoryパターンの解釈について

退会済みユーザー

退会済みユーザー

総合スコア0

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

デザインパターン

デザインパターンは、ソフトウェアのデザインでよく起きる問題に対して、解決策をノウハウとして蓄積し再利用出来るようにした設計パターンを指します。

0グッド

0クリップ

投稿2015/02/01 12:08

PofEAA(またはドメイン駆動設計)におけるRepositoryパターンについて、現在のところ以下のように解釈している。

Repositoryオブジェクトとは、DAOやActiveRecordなど、DBの一行と対応するデータアクセスモジュールを集約し、特定のドメインモデルを生成する為の窓口である

しかし、この解釈でよいのかいまいち確信が持てず、またPofEAAやドメイン駆動設計を読んでみても疑問は解消されなかった。

そこで諸兄らに私の解釈の正否を問いたい。

正しいというのであればそれでよし。違うというのであれば、是非とも正しい解釈を教授して頂ければ幸甚である。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

モデルの永続化を隠蔽するという点ではほぼ同じような解釈です。
細かいですが「生成」というよりも「取得・保存」のほうがしっくりきます。
「Repository」という単語は個人的には箱や倉庫のような何かを置いておく印象があるので
モデルを保存しておく、取り出すという操作が合うと思います。
「生成」は新しくモデルを作り出すのでファクトリの役目でしょうか。

DAOやActiveRecordなど

こちらの部分については解釈が異なります。
ActiveRecord パターンが採用されていれば Repository は不要ではないでしょうか?

投稿2015/04/13 10:36

kodai

総合スコア759

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Repositoryオブジェクトとは、DAOやActiveRecordなど、DBの一行と対応するデータアクセスモジュールを集約し、特定のドメインモデルを生成する為の窓口である

リポジトリは、ドメインモデル(問題や課題を解く考え方)を投影したドメインオブジェクト(設計・実装)を永続するための責務。 DAOやActiveRecordやDBですらも直接関係ありません。そのためリポジトリのメソッドは、ドメインのユビキタス言語由来ではなく、保存・削除・取得・検索の用語に対応したものになります。これは抽象的な操作を表しています。実装が何かは特に決まっていません。もちろん、多くはRDBMSに対応づくものになりますが、責務としては分離して考えたほうがよいですね。

なので、リポジトリの実装が具体的にRDBMSやNoSQLを利用したり、DAOやActiveRecordを利用するかはリポジトリから見た場合は要求によりけりです。ファイルやAPIサーバに対応したリポジトリもあってもよいでしょう。

**ある意味、DAOやRDBMS視点から考えるのではなく、ドメインオブジェクトのシリアライザー・デシリアライザーと考えて設計するとよいです。**RDBMSに対応するリポジトリ実装であれば、ドメインオブジェクトをテーブルのレコードへシリアライズする、もしくはレコードからデシリアライズするといった具合です。もちろん、リポジトリの内部実装でDAOやActive Recordを使うことも可能です。

投稿2021/10/03 23:23

j5ik2o

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ドメインの生成という見方はDDDのものですね。

PofEAAのほうはが先にあって、そこでは集約と隠蔽を目的としてパターンとされています。
ActiveRecordがあれば集約は不要というアーキテクチャ上の選択もありえますが、アーキテクチャの方針に依ります。

DDDのRepositoryはPofEAAのパターンを利用して、そこにDDD的な意味付けをしたものになります。

投稿2020/12/11 07:52

rysh

総合スコア874

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問