Реальный вопрос здесь заключается в следующем: относится ли ответственность за запрос (и, возможно, перечисление) источника данных к объекту запроса?
Ответ может часто меняться между различными структурами / решениями, однако, по крайней мере, для меня Query Object должен представлять спецификацию того, каким данным вы должны соответствовать. Это главная ответственность.
Он не должен знать, как обращаться к БД через какой-либо доступный API данных, скорее он должен использоваться службой / компонентом, который понимает, как сопоставить объект запроса с любым резервным хранилищем, которое он использует.
Таким образом, вы можете потенциально использовать разные источники данных с одним и тем же объектом запроса, а также позволить клиентам создавать и передавать объекты спецификации запроса на сервер (это может быть лучшим решением, чем использование серверных методов с множеством параметров).
Если изменить механизм доступа к данным (например, с исходного SQL на Hibernate), ничего с объектами запроса не придется менять, если сделать это таким образом (потенциально может быть много разных объектов запроса) - только объекты, отвечающие за отображение Объекты запроса к фактическим запросам должны будут измениться