私はプロジェクトを開始しており、データアクセスレイヤーのアーキテクチャに苦労しています。基本的には、異なるデータベース設計の複数のバックエンドとのインタフェースが必要です。複数のバックエンドと異なるデータベース設計を持つデータアクセスレイヤー
普通のDALが好きですが、これはどんなバックエンドでも共通の機能を実行します。バックエンドには、挿入、更新などのためのユニークなコードがあります。したがって、1つのバックエンドに従業員を追加すると、別のコードに別のコードが追加されます。
私はリポジトリパターンを試しましたが、その状況には当てはまりません。私はちょうどファクトリパターンメソッドで終わったが、私は各オブジェクトのファクトリを作成することになります。 DALのプロジェクトで
DAL
--> DAL.Backend1
--> Employee.Save(employee)
--> Plan.Save(plan)
--> DAL.Backend2
--> Employee.Save(employee)
--> Plan.Save(plan)
:私は以下の持っている今など、
を私は多分唯一の1つの工場を作成することもできますが、その後バックエンドのオブジェクトは、「SaveEmployee」、「SavePlan」のような機能の百を持っているでしょう私は各オブジェクト、従業員、計画のためのファクトリパターンを持っており、どのDALのオブジェクトを返して実行するかを決定します。
これはこのための最良のアーキテクチャではないと私は確信していますので、私の問題を解決するためのより良いパターンがあるのだろうかと思います。
完全に動的で動的にCRUDステートメントを作成することは少ないので、具体的な機能をどこかに配置する必要があります。データベースに入れたくない場合は、あなたが行ったルートが最善のルートだと思います。 –
私は通常、複合パターンになりがちです。 – Malk
「異なるデータベース設計」を定義します。つまり、1つはSQL、1つはXML、もう1つはNoSqlです。あるいは、さまざまなリレーショナルデータベースについて話しますか? – TomTom