Я использую инфраструктуру, которая предоставляет Шлюз Таблиц Данных и Шлюз Строковых данных как встроенные классы, которые просты в использовании, потому что все, что я должен указать, - это первичный ключ (если не просто 'id') и имя таблицы (если не совпадает с названием класса). Однако недавно я обнаружил в процессе рефакторинга, что эти шаблоны начинают ухудшать момент, когда между доменом и базой данных должно происходить более сложное сопоставление.
Например, в настоящее время я выполняю рефакторинг кода для одного веб-сайта для использования Data Mapper, чтобы я мог использовать наследование отдельных таблиц (использует Inheritance Mapping). По сути, всякий раз, когда отношения между базой данных и доменом становятся более сложными, чем один-к-одному, я настоятельно рекомендую использовать Data Mappers.