Persistenz ist laut Duden das ..Bestehenbleiben eines Zustandes über einen längere Zeitraum. In der Software-Entwicklung bedeutet dieser Begriff. dass man Daten dauerhaft speichern will, sie also über verschiedene Programmautrufe hinwegbehalten will. Im Allgemeinen bildet Persistenz eine der wesentlichen Herausforderungen bei der Entwicklung von Software. So existieren Objekte in der Objektorientierung nur im Arbeitsspeicher und gehen beim Verlassen der Anwendung verloren.
Die einfachste Möglichkeit, in Java die Persistenz von Daten zu erreichen, ist Serialisierung. Durch diese Technologie ist es möglich, einen beliebigen Baum von Objekten in ein andres Format zu konvertieren und anschließend beispielsweise in einer Datei zu speichern.
Grundsätzlich gibt es zwei Arten Objekte bzw. Daten dauerhaft zu speichern: Files und Datenbanken. Beides Varianten teilen sich in viele Unterkategorien auf.
Als Lösung für die Probleme des parallelen Zugriffs gibt es im Bereich der Persistenz den Begriff der der Transaktion. Der Begriff Transaktion, der ja als Bedeutung ursprünglich eine Geschäftstätigkeit beschreibt, legt nahe, dass ein solcher Vorgang eine bestimmte Bedeutung haben sollte. Die Idee ist also einen Geschäftsvorfall technisch als Transaktion abzubilden. Die Transaktion hat die sogenannte ACID-Eingenschaft:
Bei der Ausführung von Transaktionen muss das Transaktionssystem die ACID-Eigenschaften garantieren:
Atomarität (Atomicity): Eine Transaktion wird entweder ganz oder gar nicht ausgeführt. Transaktionen sind also „unteilbar“. Wenn eine atomare Transaktion abgebrochen wird, ist das System unverändert.
Konsistenz (Consistency): Nach Ausführung der Transaktion muss der Datenbestand in einer konsistenten Form sein, wenn er es bereits zu Beginn der Transaktion war.
Isolation (Isolation): Bei gleichzeitiger Ausführung mehrerer Transaktionen dürfen sich diese nicht gegenseitig beeinflussen.
Dauerhaftigkeit (Durability): Die Auswirkungen einer Transaktion müssen im Datenbestand dauerhaft bestehen bleiben. Die Effekte von Transaktionen dürfen also nicht verloren gehen oder mit der Zeit verblassen. Eine Verschachtelung von Transaktionen ist wegen dieser Eigenschaft streng genommen nicht möglich, da ein Zurücksetzen (Rollback) einer äußeren die Dauerhaftigkeit einer inneren, bereits ausgeführten Transaktion verletzen würde.
Transaktionen haben damit eine zentrale Bedeutung für Persistenz, da durch sie parallele Zugriffe auf Daten möglich sind, ohne die Konsistenz der Daten zu gefährden. Transaktionen sind neben dem Speichern und dem effizienten Datenmanagement, ein großes Feature von Datenbanken.