2011-07-22 5 views
7

私は最近、TableData GatewayとRowData Gatewayについて読んでいます。RDGは一度に一つのレコードを扱い、TDG は "エンタープライズアプリケーションアーキテクチャのパターン"これらのパターンはどちらも非常に似ていますが、SQLクエリをカプセル化し、私たちが作成したクエリに基づいてレコードセットに単一のレコードまたは多くのレコードを返します。RDGのTDGをいつ選択するかは本当に分かりません。いくつかのexplaination.Accordingとの違いを明確にするために非常に役立ちますマーティンファウラーTDGは1つのレコードを返すRDGと同じです。しかし、我々はまた複数のレコードのRDGを使用することもできます! 助けていただければ幸いです。 ありがとうございます。TableDataゲートウェイとRowdata Gatawayとの違いは何ですか?説明が必要

答えて

8

Row Data GatewayはDB内の行へのアクセスをカプセル化しますが、Table Data Gatewayはテーブルレベルでアクセスをカプセル化しますが、他のものの縮退型ではないようです。

テーブルデータゲートウェイには、行データゲートウェイを使用してRecordSetを返すメソッドがありますが、行ごとに1つのゲートウェイクラスを返す個別のFinderクラスが必要です。

いずれかを使用しているか、どちらを使用しているかは、使用している他のパターンの選択肢と結びついた複雑な決定です。

両方のパターンについての「使用するタイミング」セクションでの彼の議論から、Domain Modelパターンを使用する場合は、Active Recordのどちらかを使用することをお勧めします。これらのゲートウェイパターンは両方ともTransaction Scriptと組み合わせて使用​​するのが賢明です。

テーブルデータゲートウェイが簡単なので、必要な場合は適切な選択です。

これらのパターンを1つのアプリケーションで使用することはあまりありません。

+0

ありがとうございました。 – Alex

+1

面白いのは、私がリファクタリングしているが、書き換えていない現在のレガシーアプリは、実際にこれらのすべてのアクティブなレコードを賢明に使用することです:)。 –

+0

「レガシーコード」は、実際に作業しスケーリングすることで、推奨される代替案とは異なることがよくあります。 --- [Bjarne Stroustrup](https://en.wikiquote.org/wiki/Bjarne_Stroustrup) – DaveBoltman

関連する問題