🎯 什麼情境該想到我

當你「載入一個物件時不想連帶把所有關聯資料都拉進來,等真正用到才去查」的時候。

⚙️ 怎麼用(步驟 / 公式)

意圖:物件先不載入其關聯的資料,但保留「稍後如何取得」的資訊,等到真正被存取時才去資料庫載入。

做法要點:

  • 四種常見做法:Lazy Initialization(存取時檢查並載入)、Virtual Proxy(假物件占位,用到才實體化)、Value Holder(包一層持有者)、Ghost(先建空殼,觸碰時補齊)。
  • 避免一次把整張物件關聯網全部拉出,減少不必要的查詢與記憶體。
  • 常見於 ORM 的關聯載入策略。

🧪 我實際套用的紀錄

  • (待填)

⚠️ 注意 / 什麼時候不適用

  • 用不好會造成 N+1 查詢(迴圈中反覆觸發載入),反而更慢。
  • 若明知會用到整批資料,改用及早載入(eager)更划算。
  • 代理 / 空殼會讓除錯與相等判斷較不直覺。

🔗 相關工具