【问题标题】:How to use database stored procedures on mORMot?如何在 mORMot 上使用数据库存储过程?
【发布时间】:2020-09-29 14:16:52
【问题描述】:

我正在使用 mORMot 和 Delphi 来实现一个应用程序,该应用程序来自一个现有的客户端-服务器应用程序,该应用程序使用一个 Firebird 数据库,其中包含许多存储过程,用于更新一些表和查询非常复杂的数据。重新实现并将所有内容从数据库移动到应用程序端需要很长时间。

我不知道该怎么办。任何人,请帮助指导我如何使用 - 在 mORMot 上调用 Firebird 存储过程。 (如果有例子就好了。)

【问题讨论】:

  • Its documentation 暗示这是可能的(见第 13 章),但它对细节的描述非常简单。
  • 为什么选择mORMot?如果您使用的是传统的非 ORM 数据库设计,那么其他库(传统的客户端-服务器库)可能更有意义? Unified Interbase、FireDAC、DB Express、FIB+(商业和看似已死)、IBObjects 等。mORMot 对系统(程序和数据库)应该如何设计和应该如何工作有自己非常强烈的看法。将 mORMot 用于不同的方法会造成您必须弥合的巨大差距。因此,除非您也要重组数据库本身 - 我相信 mORMot 在这里是错误的选择
  • @Arioch'mORMot 不仅仅是一个 ORM。它有一个非常强大的基于接口的 SOA 层,非常适合构建强大的客户端-服务器应用程序。您可以在没有 ORM 的情况下使用 SOA 层和现有的 SQL 数据访问层,从而获得巨大的好处。您不需要编写完整的 DDD 项目。只需使用接口和类定义服务,编码最少(例如,比 DataSnap 少得多)。请看下面我的回答。尤其是最后一个链接。

标签: delphi stored-procedures firebird mormot


【解决方案1】:

存储过程非常适合直接访问数据库,但它们对于现代设计来说是一场噩梦。因此,在 mORMot 中没有直接/本地运行存储过程的方式,因为它对于 ORM 设计和现代 SOA/微服务/DDD 架构没有意义。

你可以用 mORMot 做什么,你现有的项目是例如:

  • 使用多个接口创建第一层可重用的“业务/模型”服务 - 您自己的“逻辑工具箱”;

  • 让这些接口的实现类使用您现有的 FireBird 访问库调用现有的存储过程;

  • 使用另一组公共 REST 端点发布“业务/模型”层服务,使用基于 mORMot 接口的服务,以及带有简单 DTO 的精细 REST 接口;

  • 让您的客户端应用程序的新形式从 RAD 切换到这个 n-Tier/REST 设计,如果可能,调用这个新的基于 mORMot 接口的服务;

  • 考虑编写一些新的客户端代码,可能来自 JavaScript REST/JSON 客户端(您可以为此使用第三方公司);

  • 看看 mORMot Web MVC 层 - 框架的类似 php 的功能 - 这可能有助于从现有的“业务/模型”层编写一些动态网页;

  • 考虑将 mORMot ORM 用于新表和新数据,也许切换到具有自己的 SQLite3 持久层的微服务架构(或者仍然是您真正想要的 Firebird,但您可以切换使用ORM);

  • 受益于框架的许多跨领域功能,例如日志记录、pdf 或 JSON 处理。

查看文档常见问题解答,并在 mORMot/Synopse 论坛中提问。

检查实例:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    相关资源
    最近更新 更多