Ich benutze hibernate zusammen mit einer in-Prozess HSQLDB, um in einer Swinganwendung Projekte (Instanz einer Projekt-Klasse mit ~7 assoziierten Klassen) zu persistieren. Natürlich ändert sich über die Zeit die Projektstruktur, ich muss aber weiterhin alte Projekte einlesen können.
Meine Idee ist bisher, für jede Klasse die geändert wurde eine neue Subklasse zu erzeugen (z.B. ProjectV3 extends ProjectV2 extends Project usw.), beim Laden die Versionsnummer zu lesen, mit hibernate die entsprechende Klasse (z.B. ProjectV2) zu laden, und dann in die aktuelle Klasse (z.B. ProjectV3) von Hand zu konvertieren.
Gibt es irgendwelche Features in hibernate, die dies einfachen machen?
Ich könnte wahrscheinlich dynamisch die Hibernate Mappings ändern, um dies zu realisieren. Aber die Schwierigkeit ist, dass ich nur saveOrUpdate(project) aufrufe, die abhängigen Klassen (z.B. Sequence) werden automatisch geladen, d.h. ich weiss nicht wie ich z.B. beim laden von SequenceV2 dies durch meinen Code auf das benötigte SequenceV3 bringen kann, wenn Sequence automatisch als Teil eines Projekts geladen wird.
Für alle Hinweise bin ich dankbar!
|