2016/03/09

淺談【物件關係對映(Object Relational Mapping ORM)】

在許多年前,資訊界突然興起了一陣ORM風氣,不ORM都不潮了說。

ORM: Object Relational Mapping;中文被稱為【物件關係對映】,聽起來很奇妙,物件就物件,有關係就是沒關係(?),是要對映什麼?

ORM理論是以「軟體工程師」和「資料庫管理師」為對象,將兩者產出的「物件」再做一次「關係」的「對映」處理。

你有看懂嗎?








看完我自己也不知道自己在寫什麼,重新再寫一次。



軟體工程師大多是以物件導向(OOP)為寫作基礎,具體來說就是:
Object滿天飛  圖片來源

資料庫管理師大多是以關聯(Relational)為寫作基礎,具體來說就是:
Table滿地爬  圖片來源:pg.geoscienceworld.org


兩個本質完全不同,但某些地方卻又是很相近的,比如:
  • Object相當於Tuple
  • Properties相當於Attribute
用圖片來看應該更清楚:
關聯式資料庫的資料表結構  圖片來源:維基百科

既然這麼相近,那麼就可以直接做對應關係了嗎?



理想是美好的,現實是殘酷的。


百變的Table關聯以及複雜的SQL指令,絕不是一個簡單Object可以包含的!




所以現在所能看到ORM的應用上,大都只限定簡單關聯上使用而已,你說說看,這結果是不是很殘酷!

然而,在Delphi裡,因為框架(Framework)的關係,實作上還蠻好解決,甚至是複雜SQL應用也不是問題。

實作篇我們就下回再續囉!

~To be continued~

2 則留言:

  1. Hi
    I tried your ORM... interesting! How about generating fields not tied to DB filed types (for example TIntegerField) but to native types (Integer)? As it you would create a full-PODO

    回覆刪除