Persistence Layer

Aus Salespoint

Dies ist eine alte Version. Zeitpunkt der Bearbeitung: 02:38, 6. Apr. 2009 durch Freekmastah (Diskussion | Beiträge).
Wechseln zu: Navigation, Suche

Ein elementarer Punkt der Datenhaltung ist die Speicherung von transienten Daten auf einem persistenten Datenträger. Dies geschieht meist durch die Anbindung der Applikation an eine Datenbank. Die Aufgabe des Persistence Layer's besteht daher auf Folgendem:

  • Sicherung der Objektdaten in der Datenbank
  • Wiederherstellung von Objekten aus der Datenbank
  • Gewährleistung der Referentiellen Integrität
  • Verwaltung von Datenbankverbindungen

Inhaltsverzeichnis

Komponenten

Die folgende Abbildung zeigt den generellen Aufbau des Persistence Layer's in SalesPoint ab version 4.0, das die bisherige Serialisierung ablöst.

Persistence Layer

Es sei gesagt, dass es sich bei dem Persistence Layer um eine komplexe Angelegenheit handelt und seine Funktion hier nur umrissen werden kann.

PersistenceManager

Der PersistenceManager ist die zentrale Komponente des PersistenceLayers. Er ist als Singleton implementiert und kann daher mit

PersistenceManager.getInstance();

angesprochen werden. Er Verwaltet die Datenbankverbindungen und sorgt für die Speicherung und Wiederherstellung von Objekten.

persist(Object obj)

Eine zentrale Funktion ist die Methode persist(Object obj). Sie speichert die wichtigen Daten des übergebenen Objektes und gibt einen eindeutigen Wert zurück bzw. null wenn das Objekt nicht gespeichert werden konnte. Rein theoretisch kann jedes Objekt übergeben werden... praktisch jedoch sollten diese Objekt gewisse Eigenschaften haben (siehe ...)

recover(Class class, Object ident)

recover(...) ist das Gegenstück zu persist(...). Es stellt gepeicherte Objekt wiederher. Dazu wird einerseits die Klasse des Objektes und seine eindeutiger Schlüssel benötigt. Die Methode gibt entweder das wiederhergestellte Objekt oder numm im Fehlerfall zurück.

Listen

Der PersistenceManager stellt weiterhin Funktionen zur Listenverwaltung zur Verfügung die von persistenten Liste und Maps benutzt werden

ClassFieldMapper

Der ClassFieldMapper filtert die Daten von Objekten und gibt weitere Informationen zu Klassen. Er ist standardmässig als DefaultClassFieldMapper implementiert, welcher in der Lage ist Annotationen zu verarbeiten.

ClassNameEncoder

Der ClassNameEncoder kodiert Klassennamen in einen eindeutigen String der als Tabellenname in der Datenbank verwendet werden kann. Der DefaulClassFieldMapper als seine standard Implementierung hashed dazu diesen namen via SHA-1 oder MD5 oder ersetzt einfach einige Zeichen.

DatabaseConnection

Das Interface DatabaseConnection stellt eine Datenbankverbindung mit all seine Verbindungsdaten dar. Es ist selbst speicher- und wiederherstell-bar. Die konkreten Implementationen für die verschiedenen Datenbanken übernehmen die Vereinheitlichung der Datenbank spezifischen Operationen und Typ Konvertierungen.

DatabaseConnectionTemplates

Dise Templates sind dazu da um neue Datenbankverbindungen zu erzeugen.

PersistentMap

Ist eine Implementation der Map Schnittstelle für eine persistente Datenbasis. Alles was der Map hinzugefügt wird ist also aus der Datenbank wiederherstellbar. Die Map verwendet weiterhin einen Cache um Datenbankzugriffe zu vermindern.

PersistentList

Verhält sich ähnlich wie die PeristentMap, nur handelt es sich hierbei um eine Liste

Konsequenzen für Nutzung des Frameworks

Persönliche Werkzeuge