2012-04-13 10 views
1

パフォーマンスの理由から複雑なビジネスロジックをデータベースに配置する必要があり、私はリポジトリパターンを使用しています。質問は、私がリポジトリからこのビジネスロジックを呼び出すべきかどうかです。私はリポジトリがBLとデータ記憶域の間のメディエータであるため、リポジトリにはBLを認識すべきではないことを知っています(CRUDとクエリメソッドのみを含める必要があります)。 あなたはどう思いますか?リポジトリとdb固有のビジネスロジック

+0

"複雑なビジネスロジックをデータベースに配置する" =>ストアドプロシージャを意味しますか? – guillaume31

+0

はい、私はSPを意味します。 – andrew

答えて

2

リポジトリの責任は、照会または追加するエンティティのメモリ内コレクションの類似性を提供することです。あなたが話しているビジネスロジックの種類はわかりませんが、リポジトリに導入した場合、単一責任の原則が破られる可能性があります。これは、リポジトリコードに変更の理由、結束力の低下、ひいては破壊する多くの理由を与えることを意味します。

データベースにビジネスロジックを持つストアドプロシージャがある場合は、コードをデコードするために、呼び出しコードとdbの間に何らかのインターフェイスを導入することをお勧めします。その目的は、データを永続化するのではなくビジネスロジックをトリガーすることであるため、リポジトリではありませんが、インプリメンテーションはインフラストラクチャサービスの形をとることができます。

これにより、疑似DBを使用してコードを単独でテストし、別のDBMSを指すように別のDBアクセスインターフェイスに切り替えることができます。また、ストアドプロシージャをいくつかのポイント。

関連する問題