跳到主要内容

数据存储工具:持久化对象和非持久化对象

数据存储

如何定义数据 Mendix?

In Mendix,您可以使用域模型定义数据需求。应用项目中的每个模块都可以有自己的域模型,该模型由一个或多个实体组成。这些实体可以是持久的或非持久的,并且它们包含一个或多个对象。

可持久化对象存储在数据库中, Mendix 自动创建表以将您的实体存储在数据库中。对于每个对象,都会在表中插入一条记录。非持久性实体仅在用户会话期间存在于内存中。

对于每个实体,您可以定义属性以及属性应包含的数据类型。您还可以定义安全规则、谁可以查看哪些数据以及验证规则。验证规则指定允许属性使用哪些值。

当你启动或重新部署应用程序时, Mendix 自动创建数据库表来存储您的数据。重新部署时,应用程序的所有表都会根据需要自动更改,数据将迁移到新的表结构。

可持久化对象和非持久化对象之间有什么区别?

可持久化对象存储在数据库中,因此您可以跨会话和跨用户使用数据。但是,由于非持久化实体仅在用户会话期间存在于内存中,因此此类实体无法在用户之间或跨用户会话共享。

非持久性实体主要用于您不想存储所有中间结果的计算,或者用于临时存储通过不同的集成方式从外部系统获取的数据。

对象关系映射如何在 Mendix?

Mendix 对象关系映射 (ORM) 处理数据库管理的所有方面,从建模数据需求到使用最流行的关系数据库系统的技术存储和检索。 Mendix ORM 是为了消除用户考虑数据库技术方面的需要,例如如何创建和修改表或访问和更新数据。

数据定义语言

Mendix ORM 在您部署应用程序时从数据定义语言 (DDL) 阶段开始,它将根据您在域模型中建模的业务数据需求自动创建正确的数据库结构。

创建的数据库结构将包括表、数据类型、关联、相关约束甚至继承。

需要注意的是,每当您对应用程序进行更改时,底层数据库表都会自动更新。您的数据也将被迁移。

通过处理表创建和数据迁移, Mendix 平台可帮助您快速交付应用程序。您不必亲自管理数据库架构。同样重要的是,对于大多数迁移(例如,属性重命名或类型更改), Mendix 还可以实现数据迁移的自动化。

在私有云环境中或在本地部署时,您可以选择自行管理数据库。在这种情况下,您可以采用由 Mendix 作为起点,然后将其提供给数据库管理员,以便他们确保按要求创建数据库。

数据迁移阶段还可以将数据从一个 Mendix 跨不同数据库供应商将应用程序迁移到另一个应用程序。如果您想要从本地迁移到云或从一个云迁移到另一个云,这将非常有用。有关更多详细信息,请参阅 如何迁移您的 Mendix 数据库 ,在 Mendix Studio Pro 使用方法.

数据检索

Mendix 提供了多种方法来指定要检索的数据:

  • Mendix Studio Pro 提供可视化方式来指定您的查询需求
  • 要检索特定对象或一组相关对象,可以使用 XPath 表达式
  • 对于报告需求(将多个实体聚合并合并为一个结果集非常重要), Mendix 提供 OQL 查询

在底层,所有检索首先转换为 XPath,然后转换为 OQL,最后转换为特定于数据库的 SQL 语句。

检索数据时, Mendix ORM 为您执行以下步骤:

  1. 将 XPath 查询转换为 OQL 查询。
  2. 包括额外的检索要求(例如,您的页面也需要的关联对象)。
  3. 应用您实体上定义的安全规则。
  4. 将您的实体映射到技术数据库表。
  5. 将实体属性映射到表列。
  6. 优化所需的 OQL 语句。
  7. 将 OQL 语句转换为数据库特定的 SQL 语句。
  8. 从数据库中检索记录。

正如你可以看到, Mendix ORM 应用了许多绝非微不足道的性能优化。由于应用程序模型, Mendix 平台可以确定一次性查询关联数据库记录的效率更高。

如何使用存储过程 Mendix?

使用存储过程 Mendix 取决于您的数据所在位置。

如果你想在你的数据库中使用存储过程 Mendix 应用程序中,您可以使用 Mendix Java API。有关详细信息,请参阅 如何使用 Java API ,在 Mendix Studio Pro 使用方法. 有关在您的 Mendix 使用 JDBC 的应用程序数据库,请参阅 数据存储执行连接.

如果您使用外部数据库,则可以使用 数据库连接器 附加组件可用 Mendix 卖场。

如果您在现有旧数据库的基础上进行构建,则调用存储过程最为重要。在这个领域,有很多 Oracle 关系数据库管理系统 (RDBMS)。 数据库连接器 可用的 Mendix 市场为旧版 Oracle 数据库中常见的功能提供支持,例如使用 PL/SQL 存储过程和包构建的表 API、引用游标和用户定义类型。

如何 Mendix 处理交易管理?

每次请求 Mendix 运行时会自动启动新事务。请求成功完成后,将提交事务以及所有相关数据。如果发生错误,默认情况下将回滚所有数据更改。您可以选择提供自定义错误处理逻辑来更改此默认行为。

在以下微流程中,定义了一个自定义错误处理程序。当 更改 活动失败,它对数据库所做的任何更改都会被回滚。错误处理程序定义您要对事务执行的操作:您可以回滚微流中发生的所有事情,也可以补偿问题并继续。在此示例中,生成了一条日志消息,之后微流以错误结束。然后,调用微流可以决定如何处理此问题。

数据库的作用是什么 Mendix 支持?

A Mendix 应用程序默认可以部署到多个不同的数据库服务器。只要不包含任何特定于数据库的代码,您就可以随时切换数据库供应商。

- Mendix 平台支持以下列出的数据库服务器 数据库 部分 系统要求.

选择你的语言