Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Persistenz (Informatik)

Persistenz gewährleistet Datenkontinuität und Zuverlässigkeit. Sie schützt vor Informationsverlust bei Systemabbrüchen und ermöglicht die Wiederaufnahme von …

Inhalt4 Abschnitte
  1. 1. Bedeutung der Persistenz
  2. 2. Objekte dauerhaft speichern
  3. 3. Integrität, Transaktionen und verteilte Daten
  4. 4. Verantwortung in der Laufzeitumgebung

Bedeutung der Persistenz

Persistenz bezeichnet in der Informatik die Fähigkeit eines Computerprogramms, Daten dauerhaft und unabhängig von der aktuellen Programmausführung zu speichern. Die Daten stehen damit auch nach dem Ende des Programms oder einem Systemneustart wieder vollständig zur Verfügung.

Umgesetzt wird dies zum Beispiel mit Datenbanken, Dateisystemen oder Konfigurationsdateien. Die Windows-Registry ist ein Beispiel für eine persistente Speicherung von Systemeinstellungen. Anwendungen können auf diese Weise Benutzereinstellungen und Arbeitsstände sichern.

Persistenz sorgt für Datenkontinuität und Zuverlässigkeit: Sie verringert Informationsverlust bei Systemabbrüchen und erlaubt, Arbeitsprozesse fortzusetzen. Gespeicherte Spielstände, Anwendungskonfigurationen und Geschäftsprozessdaten können beim nächsten Programmstart wiederhergestellt werden.

Objekte dauerhaft speichern

In objektorientierten Programmen dient Persistenz dazu, den Zustand von Objekten über mehrere Programmläufe hinweg zu erhalten. Ein Objekt besitzt Daten, die durch seine Attribute beschrieben werden. Werden diese dauerhaft gespeichert, lassen sie sich nach dem Beenden des Programms wiederherstellen.

Bei einer Aufgabenverwaltung können dadurch etwa Informationen zu Aufgaben, Benutzern und Projekten erhalten bleiben. Ohne Persistenz gingen solche Informationen beim Schließen des Programms verloren.

Eine verbreitete Umsetzung nutzt Datenbanken: Objekte und ihre Attribute werden in Datenbanktabellen gespeichert. Dies erlaubt eine strukturierte Speicherung und effiziente Abfragen. Eine andere Möglichkeit ist die Serialisierung, also das Speichern eines Objekts in einer Datei, sowie die Deserialisierung zum Wiederherstellen seines Zustands.

ORM-Frameworks (Object-Relational Mapping) erleichtern die Zuordnung zwischen Objekten und Datenbanktabellen. Genannt werden Hibernate in Java und Entity Framework in .NET; sie können Objekte automatisch mit Datenbanktabellen synchronisieren.

Integrität, Transaktionen und verteilte Daten

Bei der Persistenz müssen Datenintegrität und Datenkonsistenz erhalten bleiben, damit keine widersprüchlichen oder beschädigten Daten gespeichert werden. Transaktionen unterstützen dies: Datenbankoperationen werden entweder vollständig ausgeführt oder gar nicht.

Persistente Daten lassen sich über verschiedene Sitzungen hinweg wiederverwenden. Das kann Benutzerfreundlichkeit und Effizienz verbessern und ist besonders für Anwendungen im Finanzwesen, Gesundheitswesen und E-Commerce wichtig. Durch Cloud-Computing und verteilte Systeme können Daten außerdem über verschiedene Geräte und Standorte hinweg gespeichert und synchronisiert werden.

Verantwortung in der Laufzeitumgebung

Für Persistenz in einer bestehenden Laufzeitumgebung werden zwei Ansätze unterschieden: containerbasierte und komponentenbasierte Persistenz.

Bei der containerbasierten Persistenz übernimmt die Laufzeitumgebung, etwa ein Anwendungsserver, das Speichern und Wiederherstellen der Daten. Entwickler müssen sich daher weniger mit den Einzelheiten des Datenmanagements befassen.

Bei der komponentenbasierten Persistenz ist die einzelne Komponente selbst für das Speichern und Wiederherstellen zuständig. Die Programmierer müssen die dafür nötigen Mechanismen implementieren. Dieser Ansatz bietet mehr Kontrolle und Flexibilität, während die containerbasierte Variante viele Details abstrahiert. Welche Variante geeignet ist, hängt von Anforderungen und Komplexität des Projekts ab.

In Java-Entwicklungsumgebungen, insbesondere ab der Java Platform, Enterprise Edition 5, werden für containerbasierte Persistenz Enterprise JavaBeans (EJBs) verwendet. Klassen, die persistiert werden sollen, werden mit Annotations wie „@Entity“ gekennzeichnet; die Laufzeitumgebung übernimmt dann Speicherung und Wiederherstellung automatisch.

Weiterlesen