私はいくつかのパターンを学んでいます、仕事/リポジトリのUnity... Webにはいくつかの例がありますが、誰も複数のデータベースに接続しません。
私のアプリケーションでは、ほとんどの場合、データベースからオブジェクト (ユーザーなど) を取得し、別のオブジェクトから別のオブジェクトを取得する必要があります。どのようにパターンを使用できますか? (私はこのテーマの初心者なので、明示的な例は必須です)
ありがとうございました!
私はいくつかのパターンを学んでいます、仕事/リポジトリのUnity... Webにはいくつかの例がありますが、誰も複数のデータベースに接続しません。
私のアプリケーションでは、ほとんどの場合、データベースからオブジェクト (ユーザーなど) を取得し、別のオブジェクトから別のオブジェクトを取得する必要があります。どのようにパターンを使用できますか? (私はこのテーマの初心者なので、明示的な例は必須です)
ありがとうございました!
一般的な参考資料として、あなたと興味のある人は誰でもhttp://martinfowler.com/eaaCatalog/index.htmlにアクセスすることをお勧めします。ここには、 UML のコレクションと、エンタープライズ ソフトウェアの最も一般的なデザイン パターンに関する説明があります。Data MapperおよびIdentity Mapと連携するのに特に適しています。作業の 100% の統一性を理解するには、他の 2 つのパターンもマスターする必要があると思います。
あなたの質問に答えるために、作業の統一を作成してレジストリに保存できるので、アプリケーション全体で利用できると思います。ユニティは、データベースと通信するための中央ゲートウェイを確保する必要があるため、シングルトンである必要があります。ユニティ・オブ・ワークの内部には、アプリケーションのすべての操作中にオブジェクトの状態を維持する責任があるモデルを表すメモリ内の値付きオブジェクトのコレクションであるアイデンティティ マップがあります。ユニティは、モデルに対して CRUD 操作を実行し、これらの変更をコミットするために、サービス レイヤーによって使用されます。より多くのデータベースを操作するには、Identity マップに格納されているオブジェクトへのある種の名前空間アクセスを活用する必要があると思います。名前空間をどこにするかを選択できます: ユニティ オブ ワークまたはアイデンティティ マップ。決定は、アプリケーションとユースケース次第です。読み取りと書き込みの間で責任を分割したり、異種データ ソースを統合しようとしたりするために、異なる DB に接続する必要がある場合があります。別の方法は、DB オブジェクトを unity of work メソッドに注入することです。この場合、アプリケーションは使用するデータベースを 100% 制御します。
私が理解している限り、リポジトリ パターンは、モデルのストレージを抽象化するのに役立ちます。これは、アプリケーションにそのような柔軟性を提供する必要がある異種データ ソースを扱う場合に特に役立ちます。したがって、Unity of work や Data Mapper レイヤーとはかなり異なると思います。