理系学生日記

おまえはいつまで学生気分なのか

PoEAA: Repository

パターン名からは DI 用のパターンかな??と思っておりましたが、Repository はドメイン層とデータマッピング層の中間に存在する抽象化レイヤです。

Repository は、言ってみればクエリ生成を一手に引き受け、そのクエリによって抽出されたドメインをクライアントに返却するオブジェクトです。Repository を使用するクライアントは、その背景にあるデータアクセスや、データからドメインへのマッピングを完全に Repository に任せることで、データアクセスをあたかも Collection へのアクセスのようにブラックボックス化させることができます。言い換えれば、クライアントにとっての Repository は、ドメインオブジェクトの Collection クラスと同一視できるものです。 上図は Repository の使用をシーケンスで記載したものになっていますが、クライアントは抽出条件をクライテリアとして Repository に渡すだけで、ドメインオブジェクトが得られるようになっています。その裏では、Repository がそのクライテリアから SQL を構築し、DB からデータを取得し、データからドメインオブジェクトを生成する、といったことを実行することになるでしょう。