【发布时间】:2011-07-20 06:40:16
【问题描述】:
为什么某些框架(如 CakePHP、Kohana、Zend、Django、less - Rails)创建某种 SQL 抽象而不是原始 SQL 数据库访问?例如。为什么我们需要做一些变态而不是通常的查询?
UPD:是否有任何用于此目的的 SQL 注入原因?
【问题讨论】:
为什么某些框架(如 CakePHP、Kohana、Zend、Django、less - Rails)创建某种 SQL 抽象而不是原始 SQL 数据库访问?例如。为什么我们需要做一些变态而不是通常的查询?
UPD:是否有任何用于此目的的 SQL 注入原因?
【问题讨论】:
基本上一个好的抽象层可以让开发者更容易使用数据库,而不用关心他连接的是什么和什么样的数据库,从而加快了开发进程。
查看http://en.wikipedia.org/wiki/Database_abstraction_layer,这里列出了最常见的优缺点。
【讨论】:
这就是所谓的抽象。通常它是针对特定数据库的独立的。 Sql会根据连接的db类型来构建..
【讨论】:
有两个主要原因。
代码可以应用于不同的数据库。 MySQL、MS SQL 服务器、ORACLE。并与使用 OBDC(如 MSAccess)或 CSV 文件的其他数据库发生了一些争执。
大多数框架都遵循这个模型:http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
【讨论】:
这主要是为了减少所谓的数据库关系存储与应用程序中的域模型之间的阻抗不匹配。如果没有 ORM,您通常会发现自己在编写“左手右手”代码modelobject.property = reader["field],您在其中将从数据库收到的存储格式中的值映射到您的模型中。
总之,希望 ORM 能让您专注于解决业务问题,而不必担心所有的管道问题。我们还没有到达那里,但我们正在接近。
【讨论】: