【发布时间】:2021-10-23 11:36:40
【问题描述】:
我阅读了 [this][1] (dont-delete-just-dont) 文章,然后我同意不删除聚合。
我的问题是,如果我不使用 CQRS,哪个层负责过滤停用(标记为已删除)聚合? 它可能是一个用例?
UI 层接口是否具有过滤器参数,应用程序层是否在 API 上明确显示?像这样?
@RequestMapping(value = "/users/{userId}/articles", method = RequestMethod.GET)
public ResponseEntity<String> getArticlesOfUser(
@PathVariable long userId,
@RequestParam(defaultValue = ture, required = false) boolean onlyActivated) {
if(onlyActivated) {
List<Article> articles = articleApplicationService.getAllActivatedArticlesOfUser(userId);
return articlesResponse(articles);
} else {
List<Article> articles = articleApplicationService.getAllArticlesOfUser(userId);
return articlesResponse(articles);
}
}
还是应该隐藏在持久层中?像这样?
public class JPAArticleRepository implements ArticleRepository {
...
public List<Article> allArticlesByUserId(long userId) {
boolean activated = false
String query = "select article from Article article
where article.userId = :userId and article.activated= :activated";
...
}
...
}
有什么想法吗?
谢谢
【问题讨论】:
标签: microservices domain-driven-design cqrs n-tier-architecture