Persistenz (Informatik)
Persistenz ist in der Informatik der Begriff, der die Fähigkeit bezeichnet, Daten (oder Objekte) oder sog. logische Verbindungen über lange Zeit bereitzuhalten. Das gilt beispielsweise für nichtflüchtige Speichermedien oder für Dateisysteme oder Datenbanken sowie für durch Protokolle gesicherte bidirektionale und transaktionsorientierte Übertragung.
Darüber hinaus wird der Begriff im Zusammenhang mit eindeutigen und dauerhaften Identifikatoren digitaler Objekte verwendet, siehe PURL, DOI, URN.
„Persistent“ wird als ein im Kontext wohldefinierter Fachbegriff für „nicht unkontrolliert veränderlich“ verwendet. Das bedeutet beispielsweise, dass die Daten auch nach Beenden des Programms (gegebenenfalls auch bei unvorhergesehenem Beenden, z. B. bei Stromausfall) vorhanden (gespeichert) bleiben, und bei erneutem Aufruf des Programms wieder rekonstruiert und angezeigt werden können[1]. Bzgl. der logischen Verbindungen bedeutet Persistenz, dass die reale Verbindung bei Bedarf/nach einem Ausfall wiederhergestellt wird, ohne dass die zwischenzeitliche Trennung durch die Kommunikationspartner bemerkt wird.
Daten, die diese Eigenschaft nicht besitzen, existieren beispielsweise nur im Hauptspeicher des Computers und verändern oder verlieren ihren Inhalt, sobald das Programm endet, von dem sie angelegt wurden. Solche „flüchtigen“ Daten werden transient genannt, sie sind gepuffert.
Unter einer persistenten Verbindung ist eine andauernde, anhaltende Verbindung zu verstehen, die kurzzeitige Unterbrechungen überdauert, ohne dass sich ihr Informationsinhalt ändert.
Persistenz bei objektorientierten Programmen[Bearbeiten]
Zwei verschiedene Lösungsansätze bieten die Serialisierung und die objektrelationale Abbildung. Bei der Serialisierung kann das Objekt als serieller Datenstrom in ein persistentes Speichermedium geschrieben werden (z. B. durch „Java I/O Streams“). Die andere Möglichkeit ist die objektrelationale Abbildung (object-relational mapping). Diese wird durch einen sogenannten Persistenzprovider (persistence provider) realisiert. Typischerweise bieten die Datenbank-Hersteller dort eigene Implementierungen an, es gibt aber auch Open-Source Persistenzprovider (z. B. Hibernate).
Verschiedene Entwurfsmuster wie das Data Access Object unterstützen das gute Design. Sie bieten eine einheitliche Schnittstelle für verschiedene persistente Speichermedien (Dateisystem, RDBMS, Directory-Service, B2B-Service usw.).
Verantwortlichkeit bei existierender Laufzeitumgebung[Bearbeiten]
Innerhalb eines Anwendungsservers unterscheidet man zwischen containerbasierter Persistenz (die Laufzeitumgebung übernimmt das Speichern und Wiederherstellen) und komponentenbasierter Persistenz (die Komponente muss selbst speichern und wiederherstellen). Im Beispiel Java wären für die containerbasierte Persistenz die Enterprise JavaBeans (EJBs) verantwortlich. Dabei muss ab Java Platform, Enterprise Edition 5 jede zu persistierende Klasse mit der Annotation @Entity ausgezeichnet werden.[2]
Einzelnachweise[Bearbeiten]
- ↑ Persistenz/persistence. In: IT Wissen. DATACOM Buchverlag, abgerufen am 19. August 2008.
- ↑
Entity(Java EE 5 API) bei Oracle (englisch)