首页 > 解决方案 > 在哪个 API 层(存储库/服务)中放置自定义 SQL 查询逻辑?

问题描述

我正在构建一个 API,其中我需要的数据与它的持久化方式有很大不同(对于对数据库的每次访问,我正在执行 5-10 次连接,但我无法通过代码执行它们,因为它花费的时间太长)。

我正在使用控制器服务存储库架构,并且我已经阅读了几个来源,存储库应该只包含基本的 CRUD 操作。

鉴于这种:

标签: apidesign-patternsrepository-patternrepository-design

解决方案


使用标准的 N 层架构(在您的情况下 N=3,最常见),“自定义”SQL 代码当然会进入最低层,即存储库。

我现在的建议是不要将这些 SQL 查询保留在代码中,而是将它们移动到存储过程中。您将获得大量好处,而不仅仅是性能。

存储库应包含您需要的方法。创建适当的抽象并免费生活:)

另一种选择是使用 CQRS,当系统通过简单的 CRUD 时,我总是强烈建议使用它。


推荐阅读