Objektorientierte Persistenzmechanismen in Enterprise JavaBeans
- Art: Diplomarbeit
- Autor: Sven Buchholz
- Abgabedatum: März 2000
- Umfang: 141 Seiten
- Dateigröße: 1,1 MB
- Note: 1,2
- Institution / Hochschule: Technische Universität Dresden Deutschland
- ISBN (eBook): 978-3-8324-2477-0
-
ISBN (Paperback) :
978-3-8324-2477-0 P - ISBN (CD) :978-3-8324-2477-0 CD
- Sprache: Deutsch
- Prämierung:
- Arbeit zitieren: Buchholz, Sven März 2000: Objektorientierte Persistenzmechanismen in Enterprise JavaBeans, Hamburg: Diplomica Verlag
- Schlagworte: Middleware, objektorientierte Datenbanken, EJB, e-Business, Datenmodelle
In den Warenkorb
48,00 €
Diplomarbeit von Sven Buchholz
Einleitung:
In der vorliegenden Arbeit werden Möglichkeiten zum Einsatz objektorientierter Persistenzmechanismen in Enterprise JavaBeans (EJB 1.1) untersucht und Vorgehensweisen sowie Probleme näher herausgearbeitet. Dabei steht sowohl die Abbildung der verschiedenen Datenmodelle, als auch die Unabhängigkeit vom konkreten zugrundeliegenden Datenbankmanagementsystem im Vordergrund. Darüber hinaus werden Performance- und Skalierbarkeitsaspekte berücksichtigt.
Gang der Untersuchung:
Nach einer Einführung und Motivation für die Problematik werden Aspekte der Abbildung von Beans auf die Klassenstruktur einer objektorientierten Datenbank und die damit verbundenen Konvertierungen ausführlich betrachtet. Dies umfaßt neben der Abbildung des Datenmodells auch die Integration der verschiedenen Transaktionsmanagementkonzepte. Im folgenden werden Teilkomponenten des Persistenzmanagements von EJB identifiziert sowie deren Aufgaben und Abhängigkeiten herausgearbeitet. Dabei wird der Bedarf an einer einheitlichen Schnittstelle zwischen dem EJB-Container und dem Ressourcenadapter des Datenbankmanagementsystems deutlich. Diese soll die Integration eines beliebigen Persistenzmechanismus - insbesondere auch eines objektorientierten - in EJB ermöglichen.
Ausgehend von den Erkenntnissen aus den vorangestellten Betrachtungen wird im Hauptteil dieser Arbeit eine Ressourcenadapterschnittstelle, die EJBDBC-Schnittstelle, zum Einsatz bei container-managed Persistenz in EJB definiert. Die EJBDBC-Schnittstelle ist eine Call-Level-Schnittstelle, der als Datenmodell das Entity-Bean-Modell zugrunde liegt. Auf diese Weise wird ein Impedance Mismatch an der Datenbankschnittstelle vermieden. Die Abbildung des Entity-Bean-Schemas der EJB-Anwendung auf das Datenschema der zugrundeliegenden Datenbank ist innerhalb des Ressourcenadapters gekapselt. Somit wird Orthogonalität zwischen der Containerimplementierung und dem DBMS erreicht.
Eine prototypische Implementierung der vorgestellten Schnittstelle auf Grundlage eines objektorientierten Datenbankmanagementsystems war ebenfalls Teil dieser Arbeit. Anhand derer werden Messungen durchgeführt, die die Performance der verschiedenen Varianten der Abbildung des Datenmodells gegenüberstellen und den Einfluß von Prefetching zur Performanceoptimierung verdeutlichen. Dabei kommt jedoch kein realer EJB-Container zum Einsatz, sondern ein Testprogramm, welches die verschiedenen Varianten vergleichbar macht.
Inhaltsverzeichnis:
| 1. | Einleitung | 7 |
| 2. | Persistenzrelevante Aspekte von Enterprise JavaBeans | 10 |
| 2.1 | Modell- und Schemaabbildung | 11 |
| 2.1.1 | Entity-Beans als Datenmodell | 11 |
| 2.1.2 | Abbildung auf das Datenmodell objektorientierter Datenbanken | 19 |
| 2.1.3 | Schemaabbildung | 30 |
| 2.2 | Formen des Zugriffs auf Entity-Beans | 31 |
| 2.3 | Transaktionsmanagement | 32 |
| 2.3.1 | Transaktionsmodell | 32 |
| 2.3.2 | Schnittstellen zum Transaktionsmanagement | 33 |
| 2.4 | Synchronisation konkurrierender Zugriffe auf Entity-Bean-Instanzen | 34 |
| 2.5 | Sicherheitsmanagement | 35 |
| 2.6 | Performance und Skalierbarkeit | 38 |
| 2.6.1 | Passivieren von Bean-Instanzen | 38 |
| 2.6.2 | Pooling von Bean-Instanzen | 39 |
| 2.6.3 | Caching von Bean-Instanzen | 41 |
| 2.6.4 | Prefetching von Bean-Objekten | 43 |
| 3. | Rollen und Schnittstellen | 47 |
| 3.1 | Rollen im Szenario des Persistenzmanagements von Entity-Beans | 47 |
| 3.2 | Aufgaben der einzelnen Rollen | 49 |
| 3.2.1 | Container | 49 |
| 3.2.2 | Entity-Bean-Instanz | 50 |
| 3.2.3 | Transaktionsmanager | 51 |
| 3.2.4 | Ressourcenadapter und Ressourcenmanager | 51 |
| 3.3 | Schnittstellen zwischen den Rollen | 52 |
| 3.3.1 | Container - Entity-Bean-Instanz | 52 |
| 3.3.2 | Container - Transaktionsmanager | 53 |
| 3.3.3 | Container - Ressourcenadapter | 53 |
| 3.3.4 | Transaktionsmanager - Ressourcenadapter | 53 |
| 3.3.5 | Ressourcenadapter - Ressourcenmanager | 54 |
| 4. | Schnittstelle des Ressourcenadapters | 55 |
| 4.1 | Anforderungen an eine Ressourcenadapterschnittstelle | 55 |
| 4.1.1 | Datenmodell | 56 |
| 4.1.2 | Zugriffsformen | 57 |
| 4.1.3 | Assoziation von Zugriffsoperationen mit Transaktionen | 58 |
| 4.1.4 | Sicherheitsmanagement | 58 |
| 4.1.5 | Management von Bean-Instanzen | 58 |
| 4.1.6 | Transparenz der Schnittstelle | 59 |
| 4.2 | Beispiele existierender Schnittstellen | 60 |
| 4.2.1 | Schnittstellen relationaler Datenbanken | 60 |
| 4.2.2 | Schnittstellen objektorientierter Datenbanken | 63 |
| 4.3 | Entwurf der EJBDBC-Schnittstelle | 65 |
| 4.3.1 | Überblick | 65 |
| 4.3.2 | Laden und Speichern von Bean-Objekten | 67 |
| 4.3.3 | Assoziation mit Transaktionen | 69 |
| 4.3.4 | Suche nach Bean-Objekten | 69 |
| 4.3.5 | Erzeugen von Bean-Objekten | 70 |
| 4.3.6 | Löschen von Bean-Objekten | 71 |
| 4.3.7 | Caching | 71 |
| 4.3.8 | Prefetching | 73 |
| 4.3.9 | Vernichten von Helpern | 73 |
| 4.3.10 | Initialisieren des Ressourcenadapters und Lokalisieren von Home-Helpern | 74 |
| 4.3.11 | Fehlerbehandlung | 74 |
| 4.3.12 | Deployment-Informationen | 75 |
| 4.3.13 | Schemaabbildung | 75 |
| 5. | Prototypische Implementierung der EJBDBC-Schnittstelle | 76 |
| 5.1 | Versant ODBMS in der prototypischen Implementierung | 76 |
| 5.1.1 | Datenmodell der Versant Objektdatenbank | 76 |
| 5.1.2 | Transaktionen | 77 |
| 5.1.3 | Zugriffskontrolle | 78 |
| 5.1.4 | Anfragen | 78 |
| 5.2 | Grundlegende Architektur | 78 |
| 5.3 | Abbildung auf das Objektmodell der Datenbank | 80 |
| 5.3.1 | Abbildung der Attributwerte | 81 |
| 5.3.2 | Entity-Beans mit nutzerdefiniertem Primärschlüssel | 83 |
| 5.3.3 | Entity-Beans mit automatisch generiertem Primärschlüssel | 83 |
| 5.3.4 | Garbage-Collection | 84 |
| 5.4 | Abbildung von JTA-Transaktionen bei Datenbankzugriffen | 84 |
| 6. | Auswertung | 86 |
| 6.1 | Design der Schnittstelle | 86 |
| 6.2 | Performancebetrachtungen | 87 |
| 6.2.1 | Abbildung von (nicht-Bean) Objekten | 87 |
| 6.2.2 | Abbildung von Bean- und Home-Referenzen | 91 |
| 6.3 | Detailprobleme | 93 |
| 6.3.1 | Primärschlüsseläquivalenz mit equals() und hashCode() | 93 |
| 6.3.2 | Prefetching | 94 |
| 7. | Zusammenfassung und Ausblick | 96 |
| Literaturverzeichnis | 98 | |
| Anhang A: API-Referenz | ||
| Anhang B: EJBDBC-Schemadatei | ||
| Anhang C: Interaktionen: Container und Ressourcenadapter |
Form des Ladens verzögert (beim Zugriff) vollständig prefetched prefetched bis zur Tiefe n • • • • sinnvoll, wenn • nur auf einen Teil oder keines der referenzierten Objekte zugegriffen wird nacheinander auf die meisten der direkt und indirekt referenzierten Objekte zugegriffen wird abzusehen ist, daß nur eine bestimmte Tiefe benötigt wird nur an wenigen Teilbäumen die gesamte Tiefe benötigt wird nacheinander auf die meisten der direkt und indirekt referenzierten Bean-Objekte zugegriffen wird, aber die gesamte transitive Hülle so umfangreich ist, daß das Laden zu lange dauern würde typabhängig prefetched • die Objekte eines bestimmten Typs so umfangreich sind, daß das Laden aller referenzierten Objekte dieses Typs den Ladevorgang zu lange ausdehnen würde • Laden aller Unterkapitel eines Kapitels mit Ausnahme der zugeordneten mutimedialen Inhaltsportionen • • Anwendungsbeispiel (Teleteaching) • Laden eines Kapitels, bei dem nur der Name gelesen werden soll Laden eines Kapitels, dessen Unterkapitel alle sequentiell durchgearbeitet werden sollen Laden aller Unterkapitel eines Kapitels, wobei davon ausgegangen wird, daß nur ein Teil der Unterkapitel durchgearbeitet wird [...]
zugegriffen, ist Prefetching mit einer besseren Performance verbunden, da alle Attribute in genau einer Datenbankoperation geladen werden können. Die Frage des Zeitpunktes des Ladens wird noch bedeutender, wenn Attribute andere Bean-Objekte referenzieren. Die referenzierten Bean-Objekte können entweder auch im voraus oder aber verzögert geladen werden. Damit ergeben sich für Bean-Instanzen drei Möglichkeiten des Ladens: • verzögert (d.h. Laden erst beim Zugriff) • prefetched bis zur Tiefe n (d.h., alle referenzierten Bean-Objekte bis zu einer Tiefe n werden sofort geladen36, die weiteren erst beim Zugriff) • vollständig prefetched (d.h., alle Bean-Objekte der transitiven Hülle werden sofort geladen) • typabhängig prefetched (d.h., Objekte bestimmter Klassen können vom Prefetching ausgenommen werden) Beim typabhängigen Prefetching kann für einzelne Klassen angegeben werden, daß ihre Instanzen nie im voraus geladen werden. Wird bei der impliziten Verfolgung von Referenzen beim vollständigen Prefetching oder beim Prefetching bis zur Tiefe n ein Objekt erreicht, das als nicht-prefetchinggeeignet deklariert ist, so wird der Ladevorgang in diesem Zweig der Assoziationsstruktur abgebrochen. Auf diese Weise können übermäßige Verzögerungen beim Laden eines Bean-Objektes, das direkt oder indirekt sehr umfangreiche Objekte referenziert, vermieden werden. [...]
Neben dem Caching von bereits geladenen Bean-Objekten kann auch ein vorausschauendes Laden von Bean-Objekten geeignet sein, Verzögerungen zu vermeiden, die durch das Laden von Daten aus der Datenbank beim Zugriff auf ein Bean-Objekt entstehen. Ein solches vorausschauendes Laden wird als Prefetching bezeichnet. Die Attribute eines Bean-Objektes können • alle sofort vor dem ersten Zugriff auf die Bean-Instanz innerhalb einer Transaktion (Prefetching) • einzeln erst beim Zugriff auf das Attribut geladen werden. Während beim Prefetching auch Attribute geladen werden, auf die nicht zugegriffen wird, ermöglicht das verzögerte Laden beim Zugriff, nur solche Attribute zu laden, auf die auch tatsächlich zugegriffen werden soll. Wird jedoch nacheinander auf die Mehrzahl der Attribute [...]
In den Warenkorb
48,00 €
Link zur Arbeit:
http://www.diplom.de/ean/9783832424770
Arbeit zitieren:
Buchholz, Sven März 2000: Objektorientierte Persistenzmechanismen in Enterprise JavaBeans, Hamburg: Diplomica Verlag
Schlagworte:
Middleware, objektorientierte Datenbanken, EJB, e-Business, Datenmodelle



