我最近開始學習ORM,問題上升到我的腦海:爲什麼在PHP中使用ORM?
PHP應用程序大多使用MySQL和SQLite的,幾乎所有的PHP服務器具有安裝,因此是值得使用ORM在PHP是數據庫indipendent?
性能呢?
我最近開始學習ORM,問題上升到我的腦海:爲什麼在PHP中使用ORM?
PHP應用程序大多使用MySQL和SQLite的,幾乎所有的PHP服務器具有安裝,因此是值得使用ORM在PHP是數據庫indipendent?
性能呢?
數據庫獨立性不是使用ORM的主要原因。你想要的是數據庫的一般抽象。這可能意味着:簡單的使用,更快的開發,數據庫獨立性......無論如何,通常值得使用ORM。如果你的應用程序吸收了你的所有cpu能力,那麼你可以使用一些普通的sql來優化某些查詢。不過,我想這是一種罕見的情況。
你可能需要閱讀此: What are the advantages of using an ORM?
有您可以選擇使用ORM幾個原因,一些我能想到的:
使用ORM的大多數原因都與速度/易用性有關。
就性能而言,我之前使用過php的學說,而水化創造了一個巨大的開銷,而不是僅僅提取行。
如果您的服務器運行PostgreSql或SQL Server - 兩種其他非常常見的數據庫引擎,該怎麼辦?
如果要連接到舊數據庫,該怎麼辦?
另外,你有沒有維護任何直接連接到數據庫的大型項目?當我打開一個充滿mysql_query
電話的文件時,它使我發抖。
性能方面......取決於ORM問題。我在.NET環境中更加熟悉它們,當然在這種環境下性能有很大的差異,但這通常是與特性的折衷。
使用ORM將增加代碼和數據庫之間的正交性 - 這將使開發和維護更容易。在數據庫之間切換的能力是一個好處,但肯定不是唯一的原因。
使用ORM減輕了編寫與打開數據庫連接,池化連接,準備語句,執行語句,將執行語句的結果映射到更有意義的內容以及最後關閉連接有關的樣板代碼的冗餘性。
做實例化對象,設置其屬性,然後調用對象的保存操作更簡潔。這種價值僅僅是值得使用ORM來手動編碼與數據庫交互所需的許多步驟。
此外,使用乾淨的ORM,可以在對應用程序進行最少更改的情況下交換數據庫。
希望有所幫助。
對於數據庫獨立性(和性能)使用PDO。它內置了它的準備好的語句,非常適合防止SQL注入漏洞。
如果你被困在O/RM中,它甚至會帶有一點OO-flair ...請參閱PDOStatement::fetch(以及其他一些fetchXxx方法)。
ORM有點浪費時間。這是奇怪的,因爲它旨在爲您節省時間:)但它是真實的。我有幾種語言使用ORM的缺點,這是不值得的。基本上有兩種類型的項目:
與許多連接表,視圖和複雜的項目其他的東西。可能還有更多的數據庫。
在我看來ORM還活着只是由於它的內部使用它的框架。和性能?我不確定(因爲我不再使用它),但我相信性能也可能是一個問題。你必須支付至少一些價格,因爲你是從數據庫查詢中抽象出來的嗎?我認爲ORM在紙面上是個好主意,但它不起作用。
我個人認爲它不值得花時間學習它。是的,有幾個可能的例子,它的偉大使用它,但#1的編程規則的要求將改變,你會最終與SQL優化的一切,你會後悔,爲什麼打擾在第一的地方。無論如何,你可以(也應該)抽象出具有架構模式的數據庫層。 – Srneczek 2015-11-27 13:11:41