2009-12-02 8 views
6

私は、Java EE Webアプリケーションのために私の会社のアーキテクチャの一部を設計しています。ファサードと1つまたは複数のDAOを使用する理由についてはっきりしています。私が持っている問題は次のとおりです。ファサードとDAOの間にどのようなパターンが適合していますか?

データモデルの一貫性を維持するという理由から、インテグレーション層に確実に属するロジックがあります。ただし、JPAやHibernateで処理される参照整合性やその他の「生の」永続性タスクを維持するだけではありません。私はこれをビジネスロジックとして分類しません。なぜなら、それはビジネス関数とは別のものですからです。しかし、私の理解では、DAOはオブジェクトにアクセスしてデータソースにオブジェクトを永続させるために必要なロジックだけを実装すべきです。

私の結論は、統合層に適した「ビジネスオブジェクト」のようなパターンが必要だということです。私は周りを見回しましたが、私が見つけた最も近いもの(まだまだ私の心にはあまり適していません)はSun Transfer Object Assembler patternです。

Java EEについての理解に間隙があるか、そこに適合するパターンがあります。

答えて

4

多分mediatorは何をしたいです:

は、オブジェクトのセットがどのように相互作用するかをカプセル化するオブジェクトを定義します。メディエータは、オブジェクトが明示的に相互参照するのを防ぐことで、疎結合を促進し、相互作用を個別に変更することができます。

は、2つ以上のDAO Sを調整するために、DaoMediatorを使用することができます

+0

すべての回答を読んだ後、私の気持ちはメディエーターです。私たちのために行く方法です。 返信いただきありがとうございます。彼らはすべて非常に有益であった。 –

2

コントローラーが不足している可能性があり、結果としてMVCパターンが必要になることがあります。コントローラーはDAOを見渡し、一貫したビューを表示します(GUIに関しては、クライアント側のインターフェイスではなく)。このビューを介して変更が行われると、コントローラはDAOを介してモデルへの変更を調整します。このシナリオでは、ファサードオブジェクトがビューである可能性があります。

これは言いましたが、私はでもというパターンを特定することについては心配しません。あなたはすべての要件を考慮に入れて、適用可能な場合には懸念を分けて、特定のパターンを実装し、その事実の後でそれを特定するだけであることがよくあります。

0

あなたのDALとビジネスレイヤの間のデータマッパー(またはアダプタ)パターンだと思いますが、より具体的な理解がなくてもわかりません。

1

は、ドメイン駆動設計から集計を使用したと考えたことがありますか? 私は自分自身DDDの学生です。あなたが設計しようとしているビジネスロジックは、より豊かなPOJOのようなドメインモデルによって達成できるようです。それぞれのドメインオブジェクトには、その集約オブジェクトを担当する必要があります。また、そのビジネスコンセプトに関するすべてのロジックも含みます。つまり、統合レイヤーはこれらの豊富なオブジェクトを調整しますが、実際のロジック自体(つまり、いくつかの条件付きロジック)を控えることになります。

おそらく見つけようとしているパターンは、実際にはより豊かなドメインオブジェクトへのステップですか?

0

DAO間の一貫性の要件を推進しているのは何ですか?関係を規定しているビジネス上の仮定がある場合。たとえば、「Capital」の場合、他のいくつかのオブジェクトが適切な状態にあるか、正しい値が設定されていることを確認する必要がある請求書タイプがあります。これは間違いなくデータ層の領域外です。

私はこのケースのために完璧なパターンを見つけるのは難しくありません。あなたは何らかのコーディネイトクラス、メディエーター、または何らかのコントローラーを必要とします。

関連する問題