パフォーマンス上の理由から、複雑なビジネスロジックをdbに配置する必要があり、リポジトリパターンを使用しています。問題は、リポジトリからこのビジネスロジックを呼び出す必要があるかどうかです。リポジトリはBLとデータストレージ間の単なる仲介者であるため、BLを認識すべきではないことを知っています(CRUDとクエリメソッドのみが含まれている必要があります)。どう思いますか?
質問する
148 次
1 に答える
2
リポジトリの責任は、クエリを実行したり追加したりするエンティティのメモリ内コレクションの類似性を提供することです。あなたがどのようなビジネスロジックについて話しているのかはわかりませんが、リポジトリに導入した場合、単一責任の原則に違反する可能性があります。これは、リポジトリコードに変更する多くの理由、まとまりの少ない、したがって中断する多くの理由を与えることを意味します。
データベースにビジネスロジックを含むストアドプロシージャがある場合は、呼び出し元のコードとデータベースの間に何らかのインターフェイスを導入して、物事を切り離しておくことをお勧めします。データを永続化するのではなく、ビジネスロジックをトリガーすることが目的であるため、リポジトリにはなりませんが、実装は、たとえばインフラストラクチャサービスの形をとることができます。
これにより、モックデータベースを使用してコードを個別にテストし、dbアクセスインターフェイスの別の実装に切り替えて、別のDBMSを指すようにします。ある時点でストアドプロシージャをあきらめることにした場合は、オブジェクトだけを指すようになります。
于 2012-04-13T12:37:17.953 に答える