ORM 是什麼?ORM 的優缺點是什麼?
2023年2月9日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
ORM 是什麼?
在後端開發上,通常都要與資料庫做操作(新增、修改、刪除、查找),而與資料庫溝通的流程如下:
後端會撰寫 SQL 語句,並且透過一些工具或套件(例如:pymysql)向 SQL 資料庫來做溝通。而撰寫原生 SQL 的缺點為:
- 不可維護性:程式碼難閱讀且不易維護。
- 不可重用性:通常不容易被重用,每個 SQL 語句都需要獨立編寫並維護。
- 容易犯錯:容易犯錯,容易缺少引號、忘記加條件等。
- 容易被攻擊:容易遭到 SQL Injection 攻擊。
- 資料庫遷移問題:針對 MySQL 開發的 SQL 語句就沒辦法直接應用到 Oracle 上的資料庫。
為了解決上述問題,ORM 是再往上進行一層封裝,而無需去編寫原生的 SQL 語句,取而代之的是基於物件導向的思想去編寫 Class、Object、Method 等。而 ORM 會再生成 SQL 語句再往下去執行,如下圖所示。
ORM 優缺點為何?
優點
- 提高生產力:使用 ORM 可以簡化資料庫操作的程式碼,讓開發人員專注於應用程式的邏輯。
- 提高可維護性:ORM 抽象了底層的資料庫細節,使得程式碼更容易維護。
- 提高抽象性:ORM 把資料庫表格與物件之間的映射關係隱藏起來,使得開發人員不必直接與資料庫打交道。
- 移植性好:如果未來需要更換資料庫,使用 ORM 可以輕鬆移植程式碼,而不需要大量修改。
- 提高安全性:ORM 可以通過防止 SQL 注入攻擊等方式,提高應用程式的安全性。
缺點
- 效能問題:由於 ORM 在背後進行了大量的轉換與映射,因此可能會比直接使用原生 SQL 語句慢一些。
- 複雜性:ORM 本身就是一個複雜的系統,因此它的學習曲線很陡峭。
- 抽象性問題:ORM 把資料庫與應用程式隔離,因此開發人員可能不能完全了解資料庫的運作方式。
- 版本問題:不同版本的 ORM 可能有不同的功能和接口,因此在升級時需要注意程式碼的兼容性。
- 實現上的差異:不同的 ORM 可能有不同的實現方式,因此在選擇 ORM 時需要考慮適合的需求。
總的來說,ORM 的選擇取決於應用程式的特定需求和優先順序。如果需要簡化程式碼,提高生產力和可維護性,那麼 ORM 是一個不錯的選擇。但是,如果對資料庫的效能和細節有特殊的需求,那麼可能需要使用原生的 SQL 語句。