为什么有些框架(如CakePHP,Kohana,Zend,Django,less-Rails)会创建某种SQL抽象而不是原始的SQL数据库访问?例如。为什么我们需要做一些变态而不是通常的查询呢?
UPD:是否存在出于此目的的SQL注入原因?
答案 0 :(得分:1)
基本上,一个好的抽象层使开发人员更容易使用数据库,而不关心他连接到什么样的数据库,从而加快开发过程。
查看http://en.wikipedia.org/wiki/Database_abstraction_layer,此处列出了最常见的优缺点。
答案 1 :(得分:0)
这就是抽象。通常它的做法是db特定的独立。 将根据连接的db类型构建Sql ..
答案 2 :(得分:0)
主要有两个原因。
代码可以应用于不同的数据库。 MySQL,MS SQL-SERVER,ORACLE。并且使用像MSAccess或CSV文件这样的OBDC与其他数据库进行一些争论。
大多数框架都遵循此模型:http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
答案 3 :(得分:0)
主要是尝试减少数据库的关系存储与应用程序中的域模型之间的阻抗不匹配。如果没有ORM,您经常会发现自己正在编写“左手右手”代码modelobject.property = reader["field]
,您可以将数据从您从数据库收到的存储格式映射到模型中。
总之,希望ORM允许您专注于解决业务问题,而无需担心所有管道。我们还没有,但我们已经接近了。