Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在CQRS中设计查询层_Java_Design Patterns_Domain Driven Design_Cqrs - Fatal编程技术网

Java 如何在CQRS中设计查询层

Java 如何在CQRS中设计查询层,java,design-patterns,domain-driven-design,cqrs,Java,Design Patterns,Domain Driven Design,Cqrs,我想做CQR。我应该把查询放在哪里?目前我可以想到两种选择: 1) 每个查询都应该是一个只包含字符串的独立类?这样的对象应该传递给简单/愚蠢的存储库 在这种方法中,我们可能有数千个小查询/类。此外,我们在复杂查询方面也存在问题(例如,在oracle中,我们不能在(…)part中使用空where),因此没有好的地方可以检查该部分是否为空,只返回空集合而不必触摸数据库 另外,在处理不同的数据库时,使用不同的查询也有点困难 2) 在存储库对象中为每个查询创建1个方法 还是CQRS吗?我们是否失去了轻松

我想做CQR。我应该把查询放在哪里?目前我可以想到两种选择:

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

在这种方法中,我们可能有数千个小查询/类。此外,我们在复杂查询方面也存在问题(例如,在oracle中,我们不能在(…)part中使用空
where),因此没有好的地方可以检查该部分是否为空,只返回空集合而不必触摸数据库

另外,在处理不同的数据库时,使用不同的查询也有点困难

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


还是CQRS吗?我们是否失去了轻松选择和传递查询的能力?或者说它不是真的需要?

我想你可能在这里混淆了一些概念。查询和命令有单独的模型,这是非常广泛的

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


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

虽然问题用ddd标记,但似乎主要关注的是“查询”的内部结构。你能在回答中详细说明一下吗?你提到这“只是一个组织问题”,我相信这就是问题最初提出的问题。