database - 将消费者定义的聚合(例如 SQL 计数)与 'pure' 模型对象结合起来?

标签 database oop orm model

将自定义(通常是易变的)数据引入实体模型类的最佳做法是什么?这听起来可能首先是一个不好的做法,但它似乎是一个很常见的场景。在我们最近的 Web 应用程序中,我们开发了一个合适的模型,在大多数情况下,我们可以很好地加载模型实体。但在某些情况下,我们无法承受加载整个实体层次结构;例如,我们需要加载几个 SQL COUNT 的结果或可能与模型实体一起(或嵌入在模型实体中)的一些附加信息。所以基本上,要求和条件是:

  1. 这是一个 Web 应用程序,其中 99.9999999999% 的操作都是读取操作。

  2. 他们不需要处理或执行任何复杂的业务逻辑。我们只需要快速将数据获取到 HTML。

  3. 在一些性能关键的情况下,我们需要加载不符合任何模型属性的 SQL 聚合结果。

  4. 如果需要,我们需要一种可扩展的方式来引入任何新的自定义数据。

您通常如何在不围绕 ORM 做太多工作的情况下解决这个问题(例如来自数据库的原始数据)?我敢肯定这已经被讨论过很多次了,但我无法找到一个好的谷歌查询来找到任何有用的东西。

编辑:由于我后来意识到这个问题的结构不是很好,所以我决定重新表述它并开始 new one .

最佳答案

如果您只是从浏览器获取关系数据,并且中间几乎没有或没有行为,这听起来像是您在尝试使用 OO 范式解决关系问题。

我可能倾向于完全放弃面向对象的方法。

我的团队最近重写了一个应用程序,询问“可能工作的最简单的东西是什么?”和“最接近问题的语言是什么?”。我们的新应用取代了 OO 应用,最终体积小了 10 倍,速度更快,成本更低。

我们在数据库服务器上使用了 SQL、存储过程、XML 库、XSLT(用于获取 HTML)和 javascript。

关于database - 将消费者定义的聚合(例如 SQL 计数)与 'pure' 模型对象结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/619698/

相关文章:

mysql - 为什么在 mysql 中键入数据 "long blob"在 Data Explorer MATLAB 中读取为 "int8"?

php - 无法使用Mysql和Codeigniter更新数据

sql - 检查对 SQL Server 数据库的更改?

c++ - 在 C++ 中设置较低层级私有(private)字段的最佳实践

python - Django ORM : Joining QuerySets

python - 如何检查模型中特定字段的变化?

python - SQLite3 列不是唯一的

delphi - 如果没有显式调用,Delphi 是否调用继承于重写过程的方法

C#:指定一个函数arg必须继承自一个类,并实现一个接口(interface)?

java - 在 Hibernate 中使用 JPA 注释来描述外键仅在子表中的 @OneToMany 关系