私は現在、自分の小さな ORM を展開していますが、データベースから同じエンティティを複数回ロードするのを防ぐために、正規化マッピングを作成するタスクに直面していることに気付きました。
私の現在のアプローチは、を使用することHashMap<Object, WeakReference<Object>>
です。キーはマップされたデータベース エンティティの主キー (ArrayList<Object>
複合キーの場合は ) で、値はWeakReference<Object>
です。
私の主な問題は、マップをクリーンアップする方法ですか? オブジェクトが使用されなくなると、マップ内の弱い参照が移動null
し、次のルックアップでのみこれを発見します (または、オブジェクトを再度ルックアップしない場合は決して発見しません)。弱い参照ReferenceQueue
がクリアされたときに に登録し、何かを調べるたびにそのキューをチェックすることができます。WeakReference
ただし、参照がクリアされても、どのオブジェクトがクリアされたかについてのヒントは得られないため、キーをマップに格納するためにサブクラス化する必要があると思われるため、参照がクリアされた後に削除できます。
これは進むべき道ですか、それともこれを実装する簡単な方法はありますか?