ORM 是什麼?ORM 的優缺點是什麼?

2023年2月9日

💎 加入 E+ 成長計畫 與超過 300+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

ORM 是什麼?

在後端開發上,通常都要與資料庫做操作(新增、修改、刪除、查找),而與資料庫溝通的流程如下:

資料庫溝通流程
資料庫溝通流程

後端會撰寫 SQL 語句,並且透過一些工具或套件(例如:pymysql)向 SQL 資料庫來做溝通。而撰寫原生 SQL 的缺點為:

  1. 不可維護性:程式碼難閱讀且不易維護。
  2. 不可重用性:通常不容易被重用,每個 SQL 語句都需要獨立編寫並維護。
  3. 容易犯錯:容易犯錯,容易缺少引號、忘記加條件等。
  4. 容易被攻擊:容易遭到 SQL Injection 攻擊。
  5. 資料庫遷移問題:針對 MySQL 開發的 SQL 語句就沒辦法直接應用到 Oracle 上的資料庫。

為了解決上述問題,ORM 是再往上進行一層封裝,而無需去編寫原生的 SQL 語句,取而代之的是基於物件導向的思想去編寫 Class、Object、Method 等。而 ORM 會再生成 SQL 語句再往下去執行,如下圖所示。

ORM 會再生成 SQL 語句
ORM 會再生成 SQL 語句

ORM 優缺點為何?

優點

  1. 提高生產力:使用 ORM 可以簡化資料庫操作的程式碼,讓開發人員專注於應用程式的邏輯。
  2. 提高可維護性:ORM 抽象了底層的資料庫細節,使得程式碼更容易維護。
  3. 提高抽象性:ORM 把資料庫表格與物件之間的映射關係隱藏起來,使得開發人員不必直接與資料庫打交道。
  4. 移植性好:如果未來需要更換資料庫,使用 ORM 可以輕鬆移植程式碼,而不需要大量修改。
  5. 提高安全性:ORM 可以通過防止 SQL 注入攻擊等方式,提高應用程式的安全性。

缺點

  1. 效能問題:由於 ORM 在背後進行了大量的轉換與映射,因此可能會比直接使用原生 SQL 語句慢一些。
  2. 複雜性:ORM 本身就是一個複雜的系統,因此它的學習曲線很陡峭。
  3. 抽象性問題:ORM 把資料庫與應用程式隔離,因此開發人員可能不能完全了解資料庫的運作方式。
  4. 版本問題:不同版本的 ORM 可能有不同的功能和接口,因此在升級時需要注意程式碼的兼容性。
  5. 實現上的差異:不同的 ORM 可能有不同的實現方式,因此在選擇 ORM 時需要考慮適合的需求。

總的來說,ORM 的選擇取決於應用程式的特定需求和優先順序。如果需要簡化程式碼,提高生產力和可維護性,那麼 ORM 是一個不錯的選擇。但是,如果對資料庫的效能和細節有特殊的需求,那麼可能需要使用原生的 SQL 語句。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們