🎯 什麼情境該想到我
當你「想讓領域物件和資料庫互不知道對方,中間由獨立一層負責搬資料」的時候。
⚙️ 怎麼用(步驟 / 公式)
意圖:在領域物件與資料庫之間插入一層對應器(Mapper),雙向搬移資料並保持兩者互相獨立、彼此無感。
做法要點:
- Mapper 負責把物件存進資料庫、從資料庫還原成物件;領域物件本身不含任何持久化程式。
- 領域模型可自由設計,不必遷就資料表結構(可處理阻抗不匹配)。
- 通常搭配 Identity Map、Unit of Work、Lazy Load 等一起運作。
- 多數成熟 ORM(如 Hibernate)採此模式。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 實作與基礎設施複雜度較高,簡單應用會過度設計。
- 通常需要框架支援才不至於手工成本過高。
- 簡單 CRUD、物件貼近資料表時,主動記錄更划算。
🔗 相關工具
- 主動記錄 Active Record(較簡單、耦合較高的替代方案)
- 工作單元 Unit of Work(常與資料對應器搭配管理變更)
- 識別對應 Identity Map(常搭配以避免重複載入)
- 企業應用架構模式