2011-04-08 23 views
5

我最近開始學習ORM,問題上升到我的腦海:爲什麼在PHP中使用ORM?

PHP應用程序大多使用MySQL和SQLite的,幾乎所有的PHP服務器具有安裝,因此是值得使用ORM在PHP是數據庫indipendent?

性能呢?

回答

5

數據庫獨立性不是使用ORM的主要原因。你想要的是數據庫的一般抽象。這可能意味着:簡單的使用,更快的開發,數據庫獨立性......無論如何,通常值得使用ORM。如果你的應用程序吸收了你的所有cpu能力,那麼你可以使用一些普通的sql來優化某些查詢。不過,我想這是一種罕見的情況。

你可能需要閱讀此: What are the advantages of using an ORM?

+2

我個人認爲它不值得花時間學習它。是的,有幾個可能的例子,它的偉大使用它,但#1的編程規則的要求將改變,你會最終與SQL優化的一切,你會後悔,爲什麼打擾在第一的地方。無論如何,你可以(也應該)抽象出具有架構模式的數據庫層。 – Srneczek 2015-11-27 13:11:41

4

有您可以選擇使用ORM幾個原因,一些我能想到的:

  • 大多數奧姆斯將使您能夠驗證數據用於INSERT和UPDATE。
  • ORM可讓您將分區中的列名映射到您的分區中的工作字段名稱。如果您使用其他人設計的並具有奇怪列名的數據庫,那麼這可能會很方便。
  • 他們也將很好地處理您的關係。 (例如,如果您獲取的行之一具有1:m的關係,您將獲得相關項目的子陣列而無需手動執行另一個查詢)。

使用ORM的大多數原因都與速度/易用性有關。

就性能而言,我之前使用過php的學說,而水化創造了一個巨大的開銷,而不是僅僅提取行。

1

如果您的服務器運行PostgreSql或SQL Server - 兩種其他非常常見的數據庫引擎,該怎麼辦?

如果要連接到舊數據庫,該怎麼辦?

另外,你有沒有維護任何直接連接到數據庫的大型項目?當我打開一個充滿mysql_query電話的文件時,它使我發抖。

性能方面......取決於ORM問題。我在.NET環境中更加熟悉它們,當然在這種環境下性能有很大的差異,但這通常是與特性的折衷。

使用ORM將增加代碼和數據庫之間的正交性 - 這將使開發和維護更容易。在數據庫之間切換的能力是一個好處,但肯定不是唯一的原因。

1

使用ORM減輕了編寫與打開數據庫連接,池化連接,準備語句,執行語句,將執行語句的結果映射到更有意義的內容以及最後關閉連接有關的樣板代碼的冗餘性。

做實例化對象,設置其屬性,然後調用對象的保存操作更簡潔。這種價值僅僅是值得使用ORM來手動編碼與數據庫交互所需的許多步驟。

此外,使用乾淨的ORM,可以在對應用程序進行最少更改的情況下交換數據庫。

希望有所幫助。

3

對於數據庫獨立性(和性能)使用PDO。它內置了它的準備好的語句,非常適合防止SQL注入漏洞。

如果你被困在O/RM中,它甚至會帶有一點OO-flair ...請參閱PDOStatement::fetch(以及其他一些fetchXxx方法)。

1

ORM有點浪費時間。這是奇怪的,因爲它旨在爲您節省時間:)但它是真實的。我有幾種語言使用ORM的缺點,這是不值得的。基本上有兩種類型的項目:

  1. 簡單projcets有幾桌(有時甚至是1臺),不認證等,可以說只是簡單的獨立表
  2. 與許多連接表,視圖和複雜的項目其他的東西。可能還有更多的數據庫。

    1. 是啊,隨意,如果你的熟悉的設置和如何使用它的蛋糕其和平使用ORM,但你永遠不知道,如果項目要求改變,你最終regreting你曾經踩過ORM領域:)
    2. 不使用ORM,因爲您將花費更多時間修復ORM提供的「自動生成」的內容。我相信現在有些ORM是相當先進的,但是ORM在這裏就像(瘋狂猜測)10年(實際上我相信它更多)?這顯然是一個死衚衕。它不會取代未來的標準方式,今天的趨勢是NOSQL數據庫等。

在我看來ORM還活着只是由於它的內部使用它的框架。和性能?我不確定(因爲我不再使用它),但我相信性能也可能是一個問題。你必須支付至少一些價格,因爲你是從數據庫查詢中抽象出來的嗎?我認爲ORM在紙面上是個好主意,但它不起作用。

相關問題