java - 如何在CQRS中设计查询层

标签 java design-patterns domain-driven-design cqrs

我想做 CQRS。我应该在哪里提出查询?目前我可以想到两个选择:

1) 每个查询应该是一个独立的类,只包含一个字符串?这样的对象应该传递到简单/愚蠢的存储库

在这种方法中,我们可能有数千个小查询/类。此外,我们在复杂查询方面也存在问题(例如,在 Oracle 中,我们不能有空的 where in (...) 部分),因此没有好地方来检查该部分是否为空并简单地返回空甚至无需接触数据库即可收集

在不同的数据库上工作时使用不同的查询也有点困难

2) 在存储库对象中为每个查询创建 1 个方法

还是CQRS吗?我们不会失去轻松选择和传递查询的能力吗?或者也许并不真正需要?

最佳答案

我认为您可能在这里混淆了概念。 CQRS only states查询和命令有单独的模型,这非常广泛。

例如,一种可能的实现是拥有两个独立的通用存储库,一个用于查询,另一个用于命令。查询存储库实现可以使用数据库,而命令存储库实现可以使用不同的数据库。或者不是。

将查询类传递到存储库与让存储库实现许多不同的方法只是组织(查询)存储库的问题,而不是命令查询隔离问题。

关于java - 如何在CQRS中设计查询层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21723669/

相关文章:

c# - 成本计算器应用程序的设计模式?

java - 当变量仅通过 setter 获得一次时,如何使变量的行为最终化

c# - DDD 和 IOC 容器

entity-framework - 从聚合根中删除一个 child

java - 如何使用jmeter SOAP/XML-RPC请求采样器?

Java 位操作错误(转换为字节并转换回来)

java - 为什么我的递归 Java 方法中的字段会发生变化?

java - Android:键盘之前的文本编辑事件

design-patterns - MVC 中的模型到 View 通信?

asp.net-mvc - 如何使用 IOC 从存储库中删除工作单元功能