🎯 什麼情境該想到我
當你「想確保同一筆資料在一次會話內只被載入一次,避免出現多份不一致的物件」的時候。
⚙️ 怎麼用(步驟 / 公式)
意圖:用一份對照表記錄「已載入的物件」,每筆資料只載入並實例化一次,之後都回傳同一個物件。
做法要點:
- 以主鍵為 key,把已載入的物件存進 map;再次請求同一筆時直接回傳快取。
- 避免同一列在記憶體中出現兩個物件,防止更新互相覆蓋、狀態不一致。
- 兼具效能好處:省掉重複的資料庫查詢。
- 通常一個會話 / 交易一份 Identity Map,常由 Data Mapper 管理。
🧪 我實際套用的紀錄
- (待填)
⚠️ 注意 / 什麼時候不適用
- 生命週期要抓對(一般綁一次會話),跨會話共用會有陳舊資料風險。
- 不可變值物件或不需要唯一身分的資料不必納入。
- 需注意記憶體佔用與適時清理。
🔗 相關工具
- 工作單元 Unit of Work(一起管理物件狀態與變更)
- 資料對應器 Data Mapper(常內建識別對應)
- 企業應用架構模式