04.10.2013 Aufrufe

Strategien zur automatischen Objektmigration auf Grundlage ...

Strategien zur automatischen Objektmigration auf Grundlage ...

Strategien zur automatischen Objektmigration auf Grundlage ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

3.2 OBJEKTSERIALISIERUNG<br />

Bei der JDK-Serialisierung wird der Zustand des Objektes in einen byte-<br />

Strom serialisiert, aus dem durch Deserialisierung eine Kopie des Objektes im<br />

selben Zustand rekonstruiert werden kann. Mit der JDK-Serialisierung können<br />

jedoch nur Objekte serialisiert werden, die Java's Serialisierungs-Schnittstelle<br />

erfüllen. Hierfür muss jede Klasse eines Java-Objektes oder eine seiner<br />

Oberklassen das Interface Serializable oder dessen Subinterface<br />

Externalizable implementieren. Diese Objekte werden als serialisierbare<br />

Objekte bezeichnet.<br />

Bei der Standard-JDK-Serialisierung werden alle Felder eines Objektes in<br />

einen byte-Strom geschrieben, die in ihrer Klasse nicht als transient oder<br />

static gekennzeichnet sind. Enthält ein Feld ein Objekt muss es serialisierbar<br />

sein. Felder, die primitive Datentypen enthalten sind immer serialisierbar.<br />

Wenn das Objekt eines Feldes serialisiert wird, werden alle seine Felder<br />

serialisiert. Auf diese Weise wird der gesamte Objektgraph, der direkt oder<br />

indirekt mit einem zu serialisierenden Objekt verbunden ist mit serialisiert<br />

[Sun2001]. Sind bei der Serialisierung des Objektgraphen zyklische Strukturen<br />

durch mehrfache Referenzierung <strong>auf</strong> dasselbe Objekt enthalten, werden diese<br />

durch eine Hashtabelle <strong>auf</strong>gelöst [NPH1999]. Handelt es sich bei dem zu<br />

serialisierenden Objekt um einen Arraytyp, wird die Anzahl seiner Elemente<br />

und die Elemente analog wie bei Objekten bzw. primitiven Datentypen<br />

beschrieben serialisiert.<br />

Byte-Strom<br />

Byte-Strom<br />

serialisierte<br />

Daten<br />

Objekt<br />

Objekt (Kopie)<br />

Legende<br />

persistenter Zustand<br />

nicht-persistenter Zustand<br />

Abbildung 3.1: Serialisierung und Deserialisierung eines Objektes im JDK<br />

Bei der Deserialisierung des Zustandes eines Objektes werden alle Felder mit<br />

ihrem typ-spezifischen Initialwert initialisiert. Anschließend werden allen<br />

Feldern, die zum persistenten Zustand des Objektes gehören, die serialisierten<br />

Werte zugeordnet. In Abbildung 3.1 ist die Serialisierung und Deserialisierung<br />

zusammenfassend visualisiert.<br />

Es gibt jedoch auch Klassen, deren Objekte nicht serialisiert werden können.<br />

Ein Beispiel hierfür ist die Klasse Object, die die Wurzel aller Klassen bildet.<br />

Somit gibt es in der Klassenhierachie eines zu serialisierenden Objektes immer<br />

eine Oberklasse, dessen Objekte nicht serialisierbar sind. Da alle Klassen über<br />

21

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!