我目前正在滾動我自己的小ORM,並發現自己面臨創建規範化映射的任務,以防止從數據庫中多次加載相同的實體。如何在Java中實現規範化映射?
我目前的做法是使用HashMap<Object, WeakReference<Object>>
。密鑰是映射數據庫實體的主鍵(如果它是組合鍵,則爲ArrayList<Object>
),值爲WeakReference<Object>
。
我的主要問題是如何清理地圖?當一個對象不再被使用時,地圖中的弱引用將會變爲null
,我只會在下一次查找時發現它(或者從不,如果我不再查看該對象)。我可以通過ReferenceQueue
清除弱引用寄存器,然後在每次查找時檢查該隊列。清除的引用不會給我任何關於哪個對象被清除的提示,所以我想我必須繼承WeakReference
以將鍵存儲在映射中,所以我可以在清除引用後將其刪除。
這是要走的路,還是有任何簡單的方法來實現呢?
我一開始很猶豫是否要添加這個庫,但現在我已經這麼做了,我想知道爲什麼我沒有這麼做。感謝這個偉大的答案! –