我昨晚读了this post本,我注意到那是2006年的书.在ORM和数据库这件事上,我可以 Select 任何一种方式,但我只是想知道,考虑到这篇帖子是在2006年发布的,杰夫说的关于ORM的所有坏话是否仍然适用.

推荐答案

这仍然是真的.

甚至比面向对象软件更糟糕的是,如果数据库没有按照预期的方式处理,它就会受到影响.它并不打算让您在它前面插入一些抽象层.

我认为不可渗透的抽象层就是试图建造一个乐高城堡,所有的部分都封闭在一个枕套中.SQL很难正确执行.它与过程编程没有很多相同的模式,一个的最佳实践可能与另一个相反.您需要能够浏览SQL语句中的每一项,并且非常清楚它的意图和实际用途.

许多人似乎认为,就像马蹄铁一样,接近就足够好了--如果出现正确的答案,那就意味着你已经接近成功了.在SQL中,这根本不是真的.

出于这个原因,RoR和ActiveRecord模式当之无愧地赢得了DBMS资源占用的名声.优化的ActiveRecord设计通常不是最优的SQL设计,因为它鼓励SQL语句分解.

Database相关问答推荐

在使用FT.AGGREGATE聚合数据时,如何在Redis上解析ISO 8601时间?

芭蕾舞女演员坚持 1:N 关系

这到底是做什么的 Class.forName("com.mysql.jdbc.Driver").newInstance();

递归关系的数据库设计

数据库内部—从哪里开始?

当您达到 SQL Server Express 4GB / 10GB 限制时会发生什么?

Postgresql 从多个表中删除多行

将 `tsv` 文件插入 postgresql 数据库

在 MySQL 中实现一对一关系时确定外键

应用程序用户应该是数据库用户吗?

Oracle (ORA-02270) : no matching unique or primary key for this column-list error

什么是数据仓库?

MySQL是否允许使用点创建数据库?

数以百万计的条目排名

Fluent NHibernate 的类映射生成器

TransactionScope 是如何工作的?

Redis Pub/Sub 和 Redis Stream 之间的主要区别是什么?

Rails:'schema.rb' 中的版本号是否用于任何用途?

多币种 - 存储什么以及何时转换?

MySQL:为什么使用 VARCHAR(20) 而不是 VARCHAR(255)?