iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
自我挑戰組

30 天架設 Node.js - Express 框架:快速學習之路系列 第 14

Day 14 - 資料庫:使用 ORM (物件-關係映射)簡化資料庫操作(上)

  • 分享至 

  • xImage
  •  

經過前幾天學到如何在 Express 上下 SQL 語法與資料庫交換資料,
但是下 SQL 與資料庫拿資料是我們後端工程師必備的日常,

每次都要下一大串重覆的 SQL 才能拿到資料,
或是一個占位符後面的參數順序不對,寫入的資料就整個順序錯了,
對於這些部分對開發來說是比較花時間的。

所以,在現今的開發流程,一般公司都會比較傾向使用 ORM 來與資料庫連接,
提高代碼的可讀性、可維護性和安全性。

今天我們會先來介紹一下什麼是 ORM !

什麼是 ORM

依照維基百科的描述:

Object–relational mapping (ORMO/RM, and O/R mapping tool) in computer science is a programming technique for converting data between a relational database and the heap of an object-oriented programming language. This creates, in effect, a virtual object database that can be used from within the programming language.

也就是使用資料庫與我們建立的 Model  模型,進行資料交換,
而不是直接使用下 SQL 的方式。

使用 ORM 大概可以分為以下優點:

  • 提高可讀性

    ORM 允許工程師使用 Model  模型來表示數據,不需要直接處理 SQL 查詢,使用這樣映射的方式,使代碼更具可讀性,也簡化了數據庫交互,減少了錯誤並提高了代碼的生產力。

  • 安全性

    昨天提到的 SQL injection ,ORM 可以確保有意人士不會直接在輸入攔直接下 SQL 到查詢中,從而提高應用程序的安全性。

  • 易維護

    ORM 可支援定義 Model 模型,不需要直接操作數據庫表結構。使數據庫設計和維護更加靈活。

  • 支援多種數據庫

    比如說 Express 的 ORM - Sequelize,就有支援 Oracle、Postgres、MySQL、MariaDB 等資歷庫,同樣的 Model  模型寫法可適用於這些資料庫。


當然,ORM 也不是完全沒有缺點的,以下為使用 ORM 可能會有的缺點:

  • 效能問題

    因為 ORM 是在中間有一層模型,來轉換成資料庫能看得懂的 SQL 語法,

    在使用一般 CRUD 是沒什麼問題,但如果是很複雜的語法,

    對於語法與映射間的轉換可能會帶來比原生 SQL 效能來的差。

  • 不適合某些特定場景

    如果需要 JOIN 多張表或計算複雜的運算來產生報表,使用原生 SQL 語法可能會相對還比較好寫。

  • 入門門檻較高

    因為 ORM 融合了程式與 SQL 語法,初學 ORM 到掌握使用可能需要花一點時間掌握熟悉。

結論

ORM 的使用帶來了開發上的方便,可以提高開發效率並降低代碼錯誤的風險,
但是有些情境使用上反而不那麼適合,會使複雜度增加。
所以不是只要學習 ORM 就好,會下原生 SQL 語法還是後端工程師必備的技能!

以上今天對 ORM 的介紹就到這裡,
明天會介紹 Express 框架常用的 ORM - Sequelize
及常用到的實用 ORM 寫法啦~
大家明天見!

參考資料:


上一篇
Day 13 - 資料庫:創建、讀取、更新和刪除資料(下)
下一篇
Day 15 - 資料庫:使用 ORM (物件-關係映射)簡化資料庫操作(中)
系列文
30 天架設 Node.js - Express 框架:快速學習之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言