爲什麼某些框架(如CakePHP,Kohana,Zend,Django,less Rails)創建某種類型的SQL抽象而不是原始SQL數據庫訪問?例如。爲什麼我們需要做一些顛覆而不是通常的疑問?SQL抽象
UPD:有沒有SQL注入的這個目的的原因?
爲什麼某些框架(如CakePHP,Kohana,Zend,Django,less Rails)創建某種類型的SQL抽象而不是原始SQL數據庫訪問?例如。爲什麼我們需要做一些顛覆而不是通常的疑問?SQL抽象
UPD:有沒有SQL注入的這個目的的原因?
基本上,一個好的抽象層使開發人員更容易使用數據庫,而不關心他連接到什麼和哪種數據庫,從而加快了開發進程。
查看http://en.wikipedia.org/wiki/Database_abstraction_layer,這裏列出了最常見的優點和缺點。
這就是所謂的抽象。通常它的做法是數據庫特定的獨立。 Sql將基於連接的數據庫類型構建..
有兩個主要原因。
的代碼可以應用到不同的數據庫。 MySQL,MS SQL-SERVER,ORACLE。並且使用像MSAccess這樣的OBDC或CSV文件與其他數據庫進行一些小小的爭論。
大多數框架數據庫代碼的分離遵循這個模式:http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
這主要是爲了減少什麼作爲數據庫的關係存儲之間的阻抗失配的嘗試應用程序中的域模型。如果沒有ORM,您經常會發現自己寫了「左手右手」代碼modelobject.property = reader["field]
,您將數據庫中存儲格式的值映射到模型中。
總之,希望ORM允許您專注於解決業務問題,而不必擔心所有的管道問題。我們還沒有到達,但我們正在接近。
我不認爲我們會在不關心底層數據庫的情況下編寫可伸縮的應用程序。 –
呵呵,真的,但問題是關於數據庫抽象層的目的。如果你正在構建可伸縮的東西,你必須關心數據庫。但是對於不需要高負載性能的普通本地應用程序,如果您使用MySQL,PostgreSQL,SQL Server或其他任何軟件,通常無關緊要。在這種情況下,其他方面更重要(p.e.許可),並且一個良好的抽象層簡化了適配。 – Bjoern