Чем шлюз TableData отличается от Gowway Rowdata?.. требуется уточнение
Недавно я читал о TableData Gateway и RowData Gateway. Согласно "Шаблонам архитектуры корпоративных приложений" RDG работает с одной записью за раз, а TDG - с целой таблицей. Но оба эти шаблона выглядят очень похоже, они инкапсулируют запросы SQL. и либо возвращать одну запись или множество записей в наборе записей на основе запросов, которые мы делаем. Я не могу понять, когда предпочесть TDG для RDG. Было бы очень полезно прояснить разницу с некоторыми объяснениями. По словам Мартина Фаулера, TDG так же, как RDG, когда он возвращает одну запись. Но мы также можем использовать RDG для нескольких записей! Тогда зачем использовать TDG. Любая помощь будет оценена. Благодарю вас.
1 ответ
Row Data Gateway инкапсулирует доступ к строке в БД, тогда как Table Data Gateway инкапсулирует доступ на уровне таблицы, и мне не кажется, что одно является вырожденной формой другого вообще.
В то время как Table Data Gateway имеет методы find, которые возвращают RecordSets, в Row Data Gateway требуется отдельный класс Finder, который возвращает один класс шлюза на строку.
Независимо от того, используете ли вы один из них и какие используете, это сложные решения, связанные с вашим выбором того, какие другие шаблоны вы используете.
Из его обсуждений в разделах "Когда это использовать" об обоих шаблонах, если использовать шаблон модели предметной области, он предпочел бы использовать Active Record вместо любого. Оба эти шаблона шлюза целесообразно использовать в сочетании со скриптом транзакции.
Шлюз таблиц данных проще, поэтому, если он делает то, что вам нужно, он может быть правильным выбором.
Скорее всего, вы никогда не будете использовать оба этих шаблона в одном приложении.