使用没有 ORM 的 SQL 的规范模式,以及存储库模式

2024-02-04

我一直在研究 martin fowler 的企业架构模式中存储库模式部分简要描述的规范模式,以及网络上的几个示例。然而,几乎所有的示例/描述都是通过利用 ORM 和 IsSatisfiedBy 等方法创建的,这些方法由规范对象执行(并且可能由 ORM 转换为 SQL)。

我可以看到如何调整它以与 SQL 一起使用,但由于普遍缺乏 SQL 示例,我想知道人们是否将此模式与 SQL 数据访问层和存储库模式一起使用,以及他们的经验/方法如果是的话,或者可能更适合该任务的任何替代方案(如果有)。


对于清洁架构,您有以下限制:

  • 规范写在应用层或领域层
  • 数据库实体和 SQL 只允许在基础设施层使用

因此,您需要编写您的规格

  • 不使用 SQL,并且
  • 基于域实体。

如果您没有使用 ORM,则使规范模式发挥作用所缺少的部分是从规范和域实体到 SQL 和数据库表的映射。

实体框架基于约定、属性或 Fluent API 开箱即用地执行此操作。

你可以

  • 查看提供此功能集的其他库,或者
  • 自己实现某种抽象,或者
  • 打破 Clean Architecture 并在规范中使用 SQL。

不幸的是,我还没有进一步探索这些选项。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用没有 ORM 的 SQL 的规范模式,以及存储库模式 的相关文章

随机推荐

  • Require.js 忽略 baseUrl

    好吧 这让我发疯 所以也许有人可以指出我正确的方向 我使用最新的 require js 和 jquery 作为我的模块加载器 我正在使用data main属性指向一个配置文件baseUrl 当我尝试加载模块时baseUrl被忽略 并且 re
  • Flash:距 MovieClip 最近的点

    我需要限制一个点内DisplayObject艺术家给我的 我让它工作 但仅适用于光标仍在内部的情况bounds 有限对象称为limited function onSqMouseMove event MouseEvent if bounds
  • 在画布中移动按钮

    当鼠标悬停在 UIElement 上并且用户按下 Ctrl 键时 以下代码应该在画布中移动 UIElement void keydown Object sender KeyEventArgs e if e Key Key LeftCtrl
  • 如何运行本地 Windows 应用程序并将输出通过管道传输到浏览器

    我有 Windows 应用程序 EXE 文件是用 C 编写并使用 MS Visual Studio 构建的 它将 ASCII 文本输出到标准输出 我希望增强 ASCII 文本以包含有限的 HTML 和一些链接 我想调用此应用程序 EXE 文
  • 将向量列表转换为计数数据帧[重复]

    这个问题在这里已经有答案了 我有一个存储在如下列表中的字符向量列表 basket1 lt c Apple Orange Banana Apple Apple Grape basket2 lt c Grape Grape Grape Grap
  • 如何获取适配器内的视图高度以创建大小的位图?

    我将自定义 CursorAdapter 与自定义项一起使用 我需要视图高度来调整资源文件夹中位图的大小 并将此调整大小的位图设置为列表项中的 ImegeView Override public void bindView View view
  • 在 Firefox 中检测缩放

    我想检测浏览器是否放大或缩小 并不真正关心知道该值 但我认为无论如何都需要在决策过程中找到它 我已经阅读了很多关于该主题的其他 SO 帖子 但是没有一个给出的解决方案适用于 FF 尽管有 IE7 8 和 chrome 解决方案 哦 我不能使
  • 如何强制在派生类中调用基类构造函数?

    我相当确定基本的 C 问题 如果我有一个带有不带参数的构造函数的基类 并且只初始化一些受保护的成员 如果派生类与参数匹配 它是否也会立即调用此基构造函数 一厢情愿但不太可能的想法 如果不是 则为有没有办法强制它从派生类自动调用所述基构造函数
  • 数据绑定:如果属性不为空,则设置属性

    无法理解 仅当变量字段不为空时如何设置视图的某些属性 例如
  • 检查 python 类属性

    我需要一种方法来检查类 以便我可以安全地识别哪些属性是用户定义的类属性 问题是 dir inspect getmembers 等函数返回所有类属性 包括预定义的属性 例如 class doc dict hash 这当然是可以理解的 有人可能
  • 使用 VSTS 设置发布到文件夹

    我正在使用publish to folder通过右键单击项目 gt 发布 gt 发布到文件夹 通过 Visual Studio 选项 结果始终是已应用转换的可复制项目 我想使用 VSTS 自动化此过程并在 VSTS 上进行设置 我使用了后续
  • 如何在TreeView中显示目录? [复制]

    这个问题在这里已经有答案了 下面是我的代码 DirectoryInfo directoryInfo new DirectoryInfo C Users Shahul Documents Visual Studio 2010 Projects
  • sql if 在插入语句中没有选择

    昨天我问了这个问题 if在mysql中插入语句 https stackoverflow com questions 14960022 if in mysql insert statement答案非常有效 问题是 如果值不存在 我需要在表中插
  • 如何将字符串连接到现有文件?

    我有一个文本文件 其中有内容 我想向其中附加文本 这是我的代码 File outputFile new File hello out outputFile createSync List
  • 使用具有不同根和节点类型的 TreeTable

    我有以下问题 我想要一个类似 JTeeTable 的表组件 只不过树的根 下面的类 和节点不是同一类型 例如 假设我有以下课程 public final class Entry private int id private String t
  • 从哪里可以获得 x509 证书?

    我目前正在尝试创建基于 SslStream 类的聊天 我正在浏览该 msdn 链接 点击这里 http msdn microsoft com en us library system net security sslstream aspx
  • Visual Studio 2013 功能带有 NUnit 的 Code Lens

    在新的 Visual Studio 2013 中 有一个很好的新功能 称为代码镜头 http channel9 msdn com Series Visual Studio 2012 Premium and Ultimate Overview
  • 在 Python 中创建多个 CSV 工作表

    有没有办法在 Python 中以编程方式创建具有多个工作表的 CSV 文件 多个 CSV 文件 每张纸一个 CSV 文件 逗号分隔值文件是纯文本格式 它只能表示平面数据 例如表格 或 工作表 要存储多个工作表 您应该使用单独的 CSV 文件
  • 滚动 ListView,某些图像非常滞后

    我看到下面的屏幕 其中包含一些图像 每个可见页面 6 个图像 对我来说 上下滚动似乎很滞后 就像它再次渲染图像一样 向上滚动似乎比向下滚动更糟糕 有人知道如何提高此类区域的性能以创建漂亮的平滑滚动吗 Update 图像和文本都是从我的 SQ
  • 使用没有 ORM 的 SQL 的规范模式,以及存储库模式

    我一直在研究 martin fowler 的企业架构模式中存储库模式部分简要描述的规范模式 以及网络上的几个示例 然而 几乎所有的示例 描述都是通过利用 ORM 和 IsSatisfiedBy 等方法创建的 这些方法由规范对象执行 并且可能