我正在开发一个遵循( ) 模式的 //应用程序Java
。Spring
Hibernate
CQS
Query Command Separation
简单地说:
- 我们
domain model
仅用于Commands
描述需要在域模型上完成的一些操作; - 所有读取操作都由
QueryService
绕过的a 完成,domain model
因此它可以根据用例优化(使用projection
)每个查询。
域模型通过使用映射到MySQL
数据库Hibernate
。
我知道关于域和持久性模型之间的分离存在长期争论。但是,我相信现在 Hibernate 已经变得如此灵活,以至于您不必在域模型上做出艰难的牺牲。这样,您就不会在域和持久性模型之间获得一对一的映射。此外,所有与 DB 相关的东西都可以通过使用层超类型抽象出来。
我的问题:
- 如果我在我的 中使用
Hibernate
Query
(或Criteria
)使用投影,我QueryService
实际上是在使用我的域模型而不是普通的 SQL。这不是违反CQS
模式吗……? - 我可以选择在我的
QueryService
. 是否有任何好的 SQL 框架让我能够在不使用域模型的情况下构建查询并将结果轻松绑定到 JavaBeans 中?结果通常是图表,因此很容易将它们绑定到一些嵌套的 JavaBean 结构。