2016-03-31 8 views
0

nosqlとSQLデータベースの両方をサポートするために、特定のJavaプロジェクトにデータアクセス層を書き込む必要がありました。データアクセス層のデザインパターン

これを使用するには、使用しているDBサーバーを構成し、DALを使用するビジネスロジックレイヤーを使用する必要があります。

私は、アップデートの削除などの基本的な操作のための基本的なDAOインターフェイスを作成しました。

BL層については、DAOファクトリから受け取る基本インターフェイスを使用して抽象クラスを作成しました。これらのクラスをBLインスタンスを扱う別のファクトリから取得する必要がありました。

個別に実装する必要のあるより複雑なクエリが必要なときに、複雑になってコードが定型化され、そのメソッドを使用するためにDAOの型をチェックしてキャストする必要がありました基本的なインターフェイスによって。その結果、1つのモデルオブジェクトに対して多くのクラスが発生しました。

TL; DR実行時までdb型がわからない場合は、単一のAPIでオブジェクトを処理するためのシンプルでスケーラブルな方法が必要です。

私の質問は、この問題を処理するより良い方法があるかどうかです。たぶん、私はよく知っていることができないいくつかのデザインパターンはいいかもしれない。

ありがとうございました!

+0

あなたが六角形のアーキテクチャ(http://alistair.cockburn.us/Hexagonal+architecture)を調査したことがありますか?この問題を解決するためのきれいな方法についていくつかの洞察を与えるかもしれないように思えます。 –

答えて

0

抽象データレイヤを作成することは目的ではありません。ビジネス層が対話するための抽象化を作成することが目的です。あなたの問題へのアプローチを正式化するのに役立つ、Gang of Fourからのクエリーオブジェクトと一緒にいくつかのエンタープライズ統合パターンがあります。

Repository pattern

Query object

CQS (Command/query seperation)

CQRS (Command/Query Segregation Principle)

関連する問題