Цель шаблона DAO состоит в том, чтобы отделить данные, к которым вы пытаетесь получить доступ, от того, как они хранятся.
Например, вы можете создать DAO, который задает ряд методов, которые вы затем реализуете дляMySQL.Если вы когда-нибудь решите, что вам нужно перейти на MSSQL или Oracle, вам нужно всего лишь изменить реализацию, а не интерфейс, который можно было бы использовать в различных местах вашего кода.
В этом нет необходимостиэто, но может быть хорошей идеей, чтобы упростить будущие изменения и сохранить ваш код развязанным.
Что касается вашего дизайна, базовый макет в порядке, но я бы рекомендовал не использовать универсальный метод выбора, как у вас.По сути, вы просто создаете еще один уровень абстракции, в котором что-то может пойти не так без какой-либо дополнительной выгоды.
Это будет хорошо работать для простых запросов, но если вам нужно будет выполнить какие-либо объединения, вы быстро получите большойпутаница методов для разных типов соединений.
Лучше просто написать свой SQL для каждого типа данных, к которому вам нужен доступ, и создать метод, который возвращает желаемый тип данных.Это уменьшает вашу связь и позволяет при необходимости изменить реализацию.