[Data Access] ORM 原理 (8) : 集合處理與 Lazy Loading

在原理 (7) 中,我們完成了關聯的基本處理,只是我們做到的是一對一的關聯,如果今天要的是一對多的關聯時,我們就需要處理到集合物件,集合物件不像單一物件那麼簡單,尤其是集合物件的元素又和其他物件有關聯時,載入的方式就會決定程式的速度,以我們到目前為止的例子,Customers, Orders 和 Employees 三個表格,Customers 會和 Orders 有一對多的關係,而 Orders 和 Customers 與 Employees 有一對一的關係,我們在原理 (7) 中實作的是 Order 類別,所以是一對一,但如果我們要實作 Customers 和 Orders 之間的關係,會變成一對多,也就是我們要處理 Customer 類別內的 OrderCollection 集合物件...

...繼續閱讀 »

[Data Access] ORM 原理 (7) 物件關聯性

資料關聯 (data relation) 是 DBMS 的特色之一,它通常也是和物件難以整合的重要因素,因為物件的關聯和資料的關聯是不同的,物件的關聯是在物件內以屬性的方式連接另一個物件,但資料的關聯是在兩個表格之間以鍵值資料 (key) 串接,且 SQL 指令會透過 JOIN 指令 (不論是 INNER, OUTER 或 FULL) 來撈取關聯的資料,只是如果要在 ORM 內實作這樣的機制,勢必會有不小的難度,因為 JOIN 指令要由 ORM Framework 來產生,而且在取得關聯資料時,ORM Framework 未必會直接撈取關聯資料,而是在存取行為發生時才會實際填入資料 (又稱為延遲載入),後者要判斷的事就更多了。

...繼續閱讀 »