CQS шаблон с Spring / Hibernate
Я разрабатываю Java
/ Spring
/ Hibernate
приложение, которое придерживается CQS
(Query Command Separation
) шаблон.
Проще говоря:
- наш
domain model
используется толькоCommands
которые описывают некоторую операцию, которая должна быть сделана на модели предметной области; - все операции чтения выполняются
QueryService
что обходитdomain model
поэтому он может оптимизировать (используяprojection
) каждый запрос на основе варианта использования.
Модель предметной области отображается на MySQL
базы данных с помощью Hibernate
,
Я знаю, что есть давние дебаты о разделении между доменом и моделью персистентности. Тем не менее, я убежден, что в настоящее время Hibernate стал настолько гибким, что вам не нужно жертвовать жесткой моделью домена. Таким образом, вы не получите однозначного сопоставления между доменом и моделью персистентности. Кроме того, все вещи, связанные с БД, могут быть абстрагированы с использованием супертипов слоя.
Мои вопросы:
- Если я использую
Hibernate
Query
(или жеCriteria
) используя проекцию в моемQueryService
Я на самом деле использую мою модель домена вместо простого SQL. Разве это не нарушение противCQS
шаблон...? - Я мог бы выбрать использование простого SQL в моем
QueryService
, Есть ли какая-нибудь хорошая среда SQL, которая дает мне возможность создавать запросы без использования доменной модели и легко связывать результаты с JavaBeans? Результатами обычно являются графики, поэтому было бы неплохо легко связать их с какой-то вложенной структурой JavaBean.