Frage

Ich habe ein Datenmodell mit einem Skelett (Metadaten) und großen Datenobjekten. Ich möchte das Skelett im Speicher halten und schwache Verweise auf die Datenobjekte halten. Ich verstehe, wie ich das mit einfacher Java umsetzen würde, wie ich eine schwache Hashmap und aufräumen usw. erstellen würde usw. Aber ich frage mich, was der beste Weg wäre, um die Datenobjekte wieder aufzunehmen, nachdem sie gc'ds gewesen sind?

Sollte ich meiner Karte einen technischen Schlüssel hinzufügen, den ich einem Feld im Datenobjekt zuordne, damit ich ihn noch einmal finden kann? Oder sollte ich db.ext (). GetId () aufrufen und diese ID als technischen Schlüssel verwenden? Wenn ja, wie würde ich diese Schlüssel beim Laden des Elternteils bekommen? Was schlagen Sie vor?

War es hilfreich?

Lösung

Ich würde Ihrem großen Datenobjekt einen technischen Schlüssel hinzufügen. Dann speichern Sie diesen technischen Schlüssel in Ihrer Meta-Daten-Klasse. Wenn Sie jetzt das große Datenobjekt erhalten, erhalten Sie es durch den technischen Schlüssel. Diese ziemlich einfache Lösung.

DB4O verwendet tatsächlich schwache Verweise, um dasselbe Objekt zurückzugeben und eine unnötige Deserialisierung zu vermeiden. Wenn Sie also nach einem Objekt fragen und nicht vom GC gesammelt wurden, gibt DB4O das gleiche Objekt zurück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top