Пожалуйста, поправьте меня, если я ошибаюсь:
Если мы будем использовать шаблон Dao/Vo или шаблон TDG, мы получим хорошую организацию кода, имея for каждая (или, по крайней мере, множество) таблиц относится к связанному классу.
Проблема этого подхода заключается в том, что данные НЕ ЗАКРЫТЫ внутри данной таблицы. У нас есть некоторые данные, специфичные для домена, такие как findDogBreed(); или findBookBestSellerAuthor();, и приведенные выше шаблоны, похоже, не очень хорошо справляются с этим.
Единственное решение — использовать Mappers. Сопоставители будут содержать набор методов и свойств, связанных с одной таблицей, НО они не будут закрыты только для этой таблицы и не будут связаны с конкретной схемой SQL.
Проблема в том, что если мы начнем абстрагировать все эти вещи, у нас НЕ будет доступа к синтаксису SQL. Что, если нам понадобится, чтобы над этим поработал наш администратор базы данных? А в более сложных запросах использование картографов может привести к действительно запутанной абстракции.
Правильно ли это? Если да, то мне интересно, какие у нас есть пути, чтобы найти здесь средний термин.
Подробнее здесь: https://stackoverflow.com/questions/577 ... d-gateways