Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Objektreferenzen persistent speichern  Dokument im Navigationsbaum lokalisieren

Der Persistenzdienst arbeitet zur Laufzeit mit Instanzen persistenter Klassen, die wie in ABAP Objects üblich über Referenzen adressiert und am Leben gehalten werden. Wenn man eine Referenz auf ein persistentes Objekts über die Laufzeit eines ABAP-Programms hinaus aufbewahren will, beispielsweise um später in einem anderen ABAP-Programm mit dem gleichen Objekt weiter zu arbeiten, muß man sie persistent abspeichern.

Um diese Informationen in einer Datenbank abzuspeichern, benötigt man zwei Tabellenfelder vom Typ OS_GUID. Das erste Feld nimmt die beim Anlegen der persistenten Klasse generierte Klassen-GUID auf, das zweite Feld die Instanz-GUID, die das Objekt und seine Werte global eindeutig identifiziert. Beide zusammen bilden eine sogenannte OID (Object Identity). Referenzen auf Objekte persistenter Klassen, die über Mapping über Business Keys definiert wurden, können so nicht abgespeichert werden, das sie keine Instanz-GUID haben.

Die beiden Felder einer solchen OID können im Mapping Assistant auf ein einziges Attribut einer persistenten Klasse abgebildet werden. Dieses Attribut dient dann als Referenz auf das entsprechende persistente Objekt. Diese Referenz, welche keine Referenzvariable im ursprünglichen Sinn von ABAP Objects ist, wird vom Persistenzdienst behandelt. Bei Bedarf lädt dieser das persistente Objekt, auf das verwiesen wird, von der Datenbank.

Das Anlegen der zwei Felder für Klassen-GUID und Instanz-GUID ist also nur sinnvoll in Datenbanktabellen, welche als Grundlage für eine persistente Klasse dienen. Der häufigste Anwendungsfall dürfte es sein, in einem persistenten Objekt, das über einen semantischen Schlüssel (Business Key) zugänglich ist, Referenzen auf weitere persistente Objekte abzuspeichern, die über Instanz-GUIDS verwaltet werden und sonst nicht zugänglich sind (Realisierung von Objekt-Geflechten).

Hinweis

Beim Laden eines persistenten Objekts, das als Attribut eine Referenz auf ein anderes persistentes Objekt enthält, wird für letzteres zwar eine Instanz im Arbeitspeicher erzeugt, deren persistenten Attribute werden aber nicht sofort, sondern erst im Bedarfsfall geladen. Ein Bedarfsfall ist beispielsweise ein Zugriff mit einer GET-Methode.

Ende des Inhaltsbereichs