Persistence Layer
Aus Salespoint
Zeile 55: | Zeile 55: | ||
Verhält sich ähnlich wie die PeristentMap, nur handelt es sich hierbei um eine Liste | Verhält sich ähnlich wie die PeristentMap, nur handelt es sich hierbei um eine Liste | ||
+ | |||
+ | ==Konsequenzen für Nutzung des Frameworks== |
Version vom 02:38, 6. Apr. 2009
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.
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