Чем шлюз TableData отличается от Gowway Rowdata? .. требуется уточнение - PullRequest
7 голосов
/ 22 июля 2011

Я недавно читал о, TableData Gateway и RowData Gateway. Согласно «Шаблонам архитектуры корпоративных приложений» RDG имеет дело с одной записью за раз и TDG имеет дело с целой таблицей. Но оба эти шаблона выглядят очень похоже, они инкапсулируют SQL-запросы и либо возвращают одну или несколько записей в наборе записей на основе запросов, которые мы делаем. Я не могу понять, когда предпочесть TDG для RDG. было бы очень полезно прояснить разницу с некоторыми пояснениями. Согласно Мартину Фаулеру TDG - это то же самое, что и RDG, когда он возвращает одну запись. Но мы также можем использовать RDG для нескольких записей! Тогда зачем использовать TDG. Любая помощь будет оценена. Благодарю вас.

1 Ответ

9 голосов
/ 24 июля 2011

Row Data Gateway инкапсулирует доступ к строке в БД, тогда как Table Data Gateway инкапсулирует доступ на уровне таблицы, и мне не кажется, чтовырожденная форма другого вообще.

В то время как шлюз табличных данных имеет методы поиска, которые возвращают RecordSets, в Row Data Gateway вам необходим отдельный класс Finder, который возвращает один класс шлюза на строку.

Независимо от того, используете ли вы один из них и какие используете, это сложные решения, связанные с вашим выбором того, какие другие шаблоны вы используете.

Из его обсуждений в разделах «Когда использовать» об обоих шаблонах, если используется Модель предметной области , он предпочел бы использовать Active Record вместо любого.Оба эти шаблона шлюза целесообразно использовать в сочетании с Transaction Script .

Шлюз табличных данных проще, поэтому, если он делает то, что вам нужно, он может быть правильным выбором.

Вы вряд ли когда-либо будете использовать оба этих шаблона в одном приложении.

...