+ All Categories
Home > Documents > New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10....

New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10....

Date post: 11-Oct-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
31
8. Persistenz Software Engineering
Transcript
Page 1: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

8. Persistenz

Software Engineering

Page 2: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Gliederung Vorlesung

� Einführung� V-Modell XT� Analyse und Anforderungsmanagement� Benutzungsoberflächen� Architektur� Entwurf� Entwurfsmuster� Persistenz� Implementierung� Konfigurationsmanagement� Testen� Abnahme, Einführung, Wartung und Pflege

Allweyer: Software Engineering

Page 3: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Datenhaltung

� Objektorientierte Datenbank● Direkte Abbildung auf die Datenbank möglich

● Zu speichernde Objekte müssen als persistent gekennzeichnet werden, ggf. sind Typkonvertierungen erforderlich

● Für Objektverwaltung sind ggf. spezielle Klassen des ODBMS zu verwenden

� „Flache“ Dateien● Objektstrukturen sind zu sequenzialisieren

− Z. B. Satzweises Abspeichern in der Datei, zusätzlich Aufbau eines Index zum schnellen Auffinden des jeweiligen Datensatzes

− Beim Speichern eines Objektes sind jeweils Operationen erforderlich, die die entsprechenden Einträge in die Datei sowie in den Index vornehmen

� Relationale Datenbank− Siehe folgende Folien

Page 4: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Schnittstellen zu relationalen Datenbank-Systemen

� Proprietäre Schnittstellen einzelner Hersteller

� Embedded SQL: Erweiterung von Programmiersprachen, um direkt aus der Anwendung über SQL-Befehle auf die Datenbank zuzugreifen

� ODBC (Open Database Connectivity)● Standardisierte Schnittstelle zum Zugriff auf relationale DB-Systeme

● Es existieren ODBC-Treiber für die meisten heute verfügbaren RDBMS

� JDBC (Java Database Connectivity)● Speziell für Java entwickelt

● Objektorientiert

● Datenbank-übergreifend

Page 5: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Relationale Datenbanken

� Object-Relational Mismatch: Semantic Gap

Page 6: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Anfrage an das relationale Datenmodell

� Anfrage: Gib alle Bücher die vom Autor XY beim Verlag Z erschienen sind

● Datenzugriff:

− Im Prinzip müssen alle Tabellen "ge-joint" werden. Es wird zuerst eine große Tabelle gebaut, auf der dann projiziert wird.

� SQL-AnweisungSELECT b.Titel

FROM Buch b, BuchAutoren ba, Autor a, Verlag v

WHERE a.nachname = "XY"

AND v.name = "Z"

AND v.id = b.verlagId

AND b.id = ab.buchId

AND ab.autorId = a.id

Page 7: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Datenstruktur im objektorientierten Modell

� Daten entsprechen einem Graphen (Objekt-Graph)

Page 8: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Anfrage an objektorientiertes Modell

� Anfrage: Gib alle Bücher die vom Autor XY beim Verlag Z erschienen sind● Eine Collection (Collection aller Autoren) durchsuchen und dann navigieren. Es müssen nur

noch die Objekte (Bücher) traversiert werden, die auch zum Autor gehören.

Page 9: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Integrationsprobleme

� Object-Relational Mismatch● Gewährleisten der Objektidentität (OID)

● Abbildung von Objekten

● Abbildung von Vererbungshierachien

● Realisierung von Polymorphismus

● Abbildung von Assoziationen, Aggregationen und Kompositionen − (Nur 1:n Beziehungen direkt darstellbar)

Page 10: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Realisierung von Polymorphismus

� Bereitstellung von Meta-Information

� Mechanismus für late binding● Festlegung der Wertebereiche von verschiedenen Suchstrategien. Z.B.:

Suche nur über Blattklassen (Angestellter oder Kunde) oder über die komplette Hierarchie (alle Personen).

Page 11: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Abbildung von Beziehungen

� Abbildung von Assoziationen, Aggregationen und Kompositionen

● Kompositionsobjekt (z.B. Inner Class) wird rekursiv aufgelöst.

● Assoziation und Aggregation werden über Fremdschlüssel abgebildet.

● Aggregation: Cascade-Delete und Pre-Fetch berücksichtigen (Integritäts-und Performanceaspekte).

Page 12: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Integration relationaler Datenbanken

� Dereferenzierung von Beziehungen (Navigation)

� Verwendung von Proxys oder Lazy Instanciation

Page 13: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Einfacher Ansatz für Persistenz

� Enge Kopplung!

� Hohe Abhängigkeit zwischen fachlicher Komponente und Datenhaltung!

� Änderungen sind schwierig

Allweyer: Software Engineering

Quelle: Starke, Effektive Software Architekturen.3. Aufl., Hanser 2008

Page 14: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Einfache Persistenzschicht mit Datenklassen

� Einfacher Ansatz� Entwickler müssen sich aber immer noch selbst um Details der

Speicherung kümmern� Hohe Abhängigkeit zwischen Klassenstrukturen und

Tabellenstrukturen� Vernetzte Klassenstrukturen aufwändig zu speichern

Allweyer: Software Engineering

Quelle: Starke, Effektive Software Architekturen.3. Aufl., Hanser 2008

Page 15: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Anforderungen an die Persistenzschicht

� Kapselung der Speicherungsaspekte● Fachliche Klassen brauchen nur save(), read(), u.ä.

� Support verschiedener Speicherungsmechanismen● Verschiedene Datenbanken, Dateien, …● Verschiedene DB-Hersteller und SQL-Dialekte

� Unterstützung von Vererbungshierarchien� Unterstützung von Transaktionen� Unterstützung von Lazy Instantiation� Bearbeitung mehrerer Objekte auf einmal� Automatische Erzeugung eindeutiger Object Identifier (OID)� Toleranz gegenüber Änderungen der DB

● Performance Tuning-Maßnahmen sollten keine Auswirkung auf die Anwendung haben

Nach: Starke, Effektive Software Architekturen.3. Aufl., Hanser 2008

Page 16: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Komponenten von Persistenzschichten

Allweyer: Software Engineering

Quelle: Starke, Effektive Software Architekturen.3. Aufl., Hanser 2008

Page 17: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Data Access Object (DAO) Muster

Allweyer: Software Engineering

Quelle: Starke, Effektive Software Architekturen.3. Aufl., Hanser 2008

Page 18: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Ablauf bei der Nutzung des DAO-Musters

Allweyer: Software Engineering

Quelle: Starke, Effektive Software Architekturen.3. Aufl., Hanser 2008

Page 19: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Einfache Persistenzschicht

1. Abbildung auf Tabellen

2. Database Broker-Muster

3. Materialisierung von Objekten

4. Optimierung der Materialisierung mittels Cache

5. Virtual Proxy Muster

6. Materialisierung von Objektstrukturen

7. Transaktionen

Quelle: Balzert, H.: Lehrbuch der Objektmodellierung

Page 20: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

1. Abbildung auf Tabellen

� Einfache Klasse wird auf eine Tabelle abgebildet, wobei die Objekt-ID (OID) hinzugefügt wird

� Klassenattribute werden in einer eigenen Tabelle gespeichert

� 1:*-Assoziationen: Eintrag der entsprechenden OIDs als Fremdschlüssel in die Tabelle am „many“-Ende der Assoziation

� *:*-Assoziationen: Nutzung einer eigenen Tabelle

� Vererbung – mehrere Möglichkeiten● Eine Tabelle für alle Objekte der gesamten Vererbungsstruktur

● Eigene Tabelle für jede konkrete Klasse

● Eigene Tabelle für jede Klasse

Page 21: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

2. Database Broker-Muster

� Nutzung einer Klasse „Broker“● Zerlegen der Objekte in Datensätze (De-Materialisierung)

● Wiedergewinnen der Datensätze (Materialisierung)

● Cache-Verwaltung

� Jede persistente Klasse kann einen eigenen Broker haben

Page 22: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

3. Materialisierung von Objekten

� Nutzung des Schablonenmethoden-Musters zum Aufbau eines Persistence-Frameworks

● Siehe folgende Folie

� Dies ist ein Beispiel für ein typisches Framework● Abstrakte Oberklassen verwenden Schablonen-Methoden

● Die Software-Entwickler fügen Unterklassen hinzu

● In den Unterklassen werden elementare Operationen definiert, um die geerbten Schablonenmethoden zu vervollständigen

Page 23: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

Materialisierung von Objekten

objectWith(anOID) : ObjectinCache(anOID) : ObjectmaterializeWith(anOID) : Object

Broker

currentRecordAsObject() : ObjectmaterializeWith(anOID) : ObjectselectFirst(query) : Object

RelationalBroker

currentRecordAsObject() : Artikel

ArtikelBroker

OID()nummer()bezeichnung()preis()

Artikel

field(fieldName) : Object

RDBRecord

1 1

Operation zum Aufbaueines Objekts: Prüft, obbereits im Cache undgibt ggf. das Objekt zurück. Wenn nicht: Auf-ruf materializeWith()

Operation zum Zusam-mensetzen eines Objekts.Hierbei Aufruf voncurrentRecordAsObject

currentRecord

Artikel a = new Artikela.Nummer(currentRecord.field(„Nummer“)...return a

Page 24: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

4. Optimierung d. Materialisierung mittels Cache

� Materialisierung von Objekten ist relativ aufwändig

� Zur Verbesserung der Performance werden materialisierte Objekte in einem Cache-Speicher gehalten

� Falls jede Anwendungsklasse einen eigenen Broker besitzt, gibt es auch für jede Klasse einen eigenen Cache

� Es kann bis zu 6 Caches pro Broker geben, wobei die Caches dann jeweils einen Transaktionszustand realisieren (s.u.)

objectWith(anOID) : ObjectinCache(anOID) : ObjectmaterializeWith(anOID) : Object

Brokeradd(OID, Object)find(OID) : ObjectisEmpty() : boolean

ObjectCache

1 6

Page 25: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

5. Virtual Proxy-Muster

� U. U. kann es sinnvoll sein, ein Objekt erst dann zu materialisieren, wenn es benötigt wird

� Einsatz des Proxy-Musters● Proxy-Objekt kennt nur die OID und die Signaturen des eigentlichen

Objekts

● Wird eine Botschaft, an das Proxy-Objekt gesandt, stößt dieses die Materialisierung des Objektes an und leitet die Botschaft an dieses weiter

Page 26: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

6. Materialisierung von Objekt-Strukturen

� Es sollen nicht nur einzelne Objekte materialisiert werden, sondern gesamte Strukturen (z. B. ein Lieferant mit allen Artikeln, die er liefert)

� Wird die Gesamtstruktur materialisiert, so ist dies sehr aufwändig

� Lösung:● Materialisierung on-demand

● Erst wenn zu dem assoziierten Objekt eine Botschaft geschickt wird, wird dieses durch sein Proxy materialisiert

Page 27: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Allweyer: Software Engineering

7. Transaktionen

Page 28: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

Beispiel: Java Persistence API (JPA)

� Spezifikation für die Persistierung von Java-Objekten in relationale Datenbanken

� Ursprünglich aus Java EE (EJB), es handelt sich aber um eine leichtgewichtige Lösung, auch für Java SE-Anwendungen

� Verschiedene Implementierungen (JPA-Provider)● z. B. Hibernate, EclipseLink, TopLink

� Objekt-relationales Mapping von POJOs (Plain Old Java Objects) mittels Meta-Daten

● als Annotations im Java Code, oder

● in separater XML-Datei

� Weitere Elemente● Abfragesprache

● Implementierungen ermöglichen zumeist auch die Erzeugung des DB-Schemas

Allweyer: Software Engineering

Page 29: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

JPA: Entity-Klasse mit Annotation

Allweyer: Software Engineering

Quelle: Alexander Kunkel, http://www.kunkelgmbh.de/jpa/JPA%20mit%20Hibernate.pdf

Page 30: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

JPA: Insert

Allweyer: Software Engineering

Quelle: Alexander Kunkel, http://www.kunkelgmbh.de/jpa/JPA%20mit%20Hibernate.pdf

Page 31: New 8. Persistenz - team.FH-KL.deteam.fh-kl.de/uploads/media/SWE-08-Persistenz-v05.pdf · 2012. 10. 14. · Allweyer: Software Engineering Datenhaltung Objektorientierte Datenbank

JPA: Beziehungen

Allweyer: Software Engineering

Quelle: Alexander Kunkel, http://www.kunkelgmbh.de/jpa/JPA%20mit%20Hibernate.pdf


Recommended