再:あなたがAGGREGATE ROOTとリポジトリパターンの考え方に「どのように私は新しいオブジェクトを作成する必要がある場合に根本的なORMを呼び出すために」
を見たことが - 彼らは役に立つかもしれません。
概要: AGGREGATE ROOTは、システム内でグローバルに一意のIDを持つ「エンティティ」です。たいていの場合、これらはアプリケーションが 'id'をつかむ必要がある唯一のオブジェクトです。それらは、アプリケーションスタートアップ/ブートストラップ時に、一般的にに、のデータレイヤーで初期化されているREPOSITORYで検出されます。
アグリゲーションルートのファクトリは、一般に、アプリケーション起動/ブートストラップ時のデータレイヤーについては、knowに初期化されています。
REPOSITORYは、任意の方法でオブジェクトのデータを掘り起こすプロセスを仲介できます。 REPOSITORYは、生データを取得するためにdatalayer/mapperに委譲し、建物を行うためにFACTORY(クラス/メソッド)にオブジェクト再構成の実際のジョブを委託する傾向があります。REPOSITORYは、新しく再構成されたAGGREGATE ROOTオブジェクト、 of)を、REPOSITORYのfindメソッドを呼び出したクライアント、つまりアプリケーションに渡します。 REPOSITORYは、AGGREGATE ROOTを検索して保存するインターフェイスで、メモリ内に格納されている動作を示します。
しかし、アプリケーションは、新しいAGGREGATE ROOTオブジェクトを作成するために、FACTORYを直接使用することがあります。
AGGREGATE ROOTのFactoryは、ORM/Mapper Layersに関する優れた知識を持ち、新しいエンティティの作成時に、ある種の 'number sequence object'のサービスを呼び出して固有IDを取得することがあります。
AGGREGATE根は、一般的にあなたが他のドメインオブジェクトは、どちらかであるため、「世界的に知られているIdで検索」する必要があるドメインオブジェクトの唯一の種類があります:
- 使い捨て値オブジェクト - お金の価値のように、OR
- 「全体ルートに依存する」エンティティ。私。
- AGGREGATE ROOTは実際にそれを見つける必要がある唯一のものでなければならないことを意味しAGGREGATEのROOTのコンテキスト内でのみ一意であるIDを持つオブジェクトは、/それを使用する - 内部
- 彼らはで見つけることができます
- そのIDがそのコンテキスト/スコープを定義AGGREGATEのROOTによって作成することができるAGGREGATE根のORMマッパーを使用
参考資料:
ドメイン駆動設計、Eric Evansを参照してください。
集約ルート: http://books.google.co.uk/books?id=7dlaMs0SECsC&lpg=PP1&dq=domain%20driven%20design&pg=PA147#v=onepage&q=&f=false
Repositroies: http://books.google.co.uk/books?id=7dlaMs0SECsC&lpg=PP1&dq=domain%20driven%20design&pg=PA147#v=onepage&q=&f=false