Hallo zusammen,
Ich suche eine Möglichkeit, ein Objekt in Java intelligent abzuspeichern. Im Moment mach ich das mit Serialize und das funktioniert eigentlich ganz gut. Wenn ich aber die Klasse eines gespeicherten Objektes verändere, lässt sich das serialisierte Objekt nicht mehr laden (ist ja auch logisch).
Ich möchte nun aber sicherstellen, dass das Objekt trotzdem geladen werden kann. Ich habe versucht, eine Konvertierungsfunktion zu schreiben aber mein Objekt enthält nebst normalen Java-Datentypen auch eigene Objekte, welche sich unter Umständen auch ändern können. Das hiesse, dass ich bei einer Änderung einer beliebigen Klasse die mitserialisiert wird (ca 30 Stk.) dem Hauptobjekt eine neue Versionsnummer verpassen müsste, dass ich eine weitere konvertierungsmethode schreiben müsste und, dass ich die vorherigen Klassen im Projekt mitführe, da ich sie benötige um die Konvertierung vorzunehmen.
Fazit: Bei jedem neuen Release würde sich die Software um eine Menge Klassen erweitern, die nur dazu da sind, alte Objekte zu konvertieren. Die Konvertierung wäre schlecht zu überblicken, usw.
Ich denke, theoretisch könnte ich alle Werte plaintext aufbereiten, laden und auf das aktuelle Objekt übertragen. Nicht vorhandene Werte werden mit Standardwerten gefüllt. Mein Objekt besteht allerdings aus sehr vielen Tabellen mit sehr vielen Werten. Es dürften bei normaler Grösse eines Projekts in meiner Software mehrere tausend Einträge sein.
Gibt es andere, bessere Strategien? Existieren in Java Standard-Mechanismen zum Lösen dieses Problems?
Ich bin für jeden Tipp dankbar.
Gruss
mas
Ich suche eine Möglichkeit, ein Objekt in Java intelligent abzuspeichern. Im Moment mach ich das mit Serialize und das funktioniert eigentlich ganz gut. Wenn ich aber die Klasse eines gespeicherten Objektes verändere, lässt sich das serialisierte Objekt nicht mehr laden (ist ja auch logisch).
Ich möchte nun aber sicherstellen, dass das Objekt trotzdem geladen werden kann. Ich habe versucht, eine Konvertierungsfunktion zu schreiben aber mein Objekt enthält nebst normalen Java-Datentypen auch eigene Objekte, welche sich unter Umständen auch ändern können. Das hiesse, dass ich bei einer Änderung einer beliebigen Klasse die mitserialisiert wird (ca 30 Stk.) dem Hauptobjekt eine neue Versionsnummer verpassen müsste, dass ich eine weitere konvertierungsmethode schreiben müsste und, dass ich die vorherigen Klassen im Projekt mitführe, da ich sie benötige um die Konvertierung vorzunehmen.
Fazit: Bei jedem neuen Release würde sich die Software um eine Menge Klassen erweitern, die nur dazu da sind, alte Objekte zu konvertieren. Die Konvertierung wäre schlecht zu überblicken, usw.
Ich denke, theoretisch könnte ich alle Werte plaintext aufbereiten, laden und auf das aktuelle Objekt übertragen. Nicht vorhandene Werte werden mit Standardwerten gefüllt. Mein Objekt besteht allerdings aus sehr vielen Tabellen mit sehr vielen Werten. Es dürften bei normaler Grösse eines Projekts in meiner Software mehrere tausend Einträge sein.
Gibt es andere, bessere Strategien? Existieren in Java Standard-Mechanismen zum Lösen dieses Problems?
Ich bin für jeden Tipp dankbar.
Gruss
mas