Mind the Gap Die semantische Lücke zwischen Objekten und Relationen Inhalt Das „Problem“ Lösungsansätze Vor- und Nachteile Abschluß Das „Problem“ Objektorientierte Programmiersprachen wurden für die Erstellung von Software konzipiert Relationale Datenbanken wurden zum Speichern und Verwalten von großen Datenmengen konzipiert Zwei Datenmodelle treffen aufeinander Objektorientiertes (Netzwerk) Modell Relationales Datenmodell Gegenüberstellung Objektorientiertes Modell Relationales Datenmodell Verhaltensorientiert Strukturorientiert Unstrukturiert Tabellarisch Methoden Relationale Algebra Imperativ Deskriptiv Objektidentität Wertsemantik Einzelne Objekte Mengenverarbeitung Referenzen Fremdschlüssel Der Brückenschlag Wie komme ich an meine Daten? Wie verbinde ich Daten und Algorithmen? Wie bekomme ich die Daten in meine Objekte? Inhalt Das „Problem“ Lösungsansätze Vor- und Nachteile Abschluß Lösungsansätze JDBC „von Hand“ (DAO, …) Leichtgewichtige Frameworks (PriDE, …) JDO-Produkte (LiDO, Kodo, Jakarta Object Relational Bridge (OJB)…) Proprietäre Frameworks (TopLink, Hibernate, Castor, …) JDBC Vorteile Nachteile Stabiler Standard Geringer Abstraktionsgrad Hohe Flexibilität Hoher Programmieraufwand Leicht zu erlernen Viel Know-How nötig Hohe Performance Bedingt portabel (SQL) (Nur relationale DB) Leichtgewichtiges Framework (PriDE) 42 Klassen 240kb Java Source (70kb jar-File) Keine externen Abhängigkeiten (außer JDBC-Treiber) Basierend auf DAO-Pattern Expression Builder Connection Management Leichtgewichtiges Framework (PriDE) Vorteile Nachteile Gute Unterstützung für Routineaufgaben Kein Nachladen von referenzierten Objekten Leicht zu erlernen Kein Objekt-Caching Hohe Flexibilität Bedingt portabel (SQL) Leicht erweiterbar (Nur relationale DB) Hohe Performance JDO Sun Standard – JSR 12 (Version 1.0.1 – 16.09.2003) (Version 1.0 – 30.04.2002) Version 2.0 in Arbeit (seit 08/2003) Viele verschiedene Produkte: Solarmetric (Kodo JDO), LIBeLIS (LiDO), Poet (FastObjects), Hemisphere (JDOGenie), Progress (ObjectStore), Versant (enJin), Jakarta OJB, XORM, TJDO, ... JDO Orthogonale Persistenz (Persistence by reachability) Via Bytecode-Enhancement Anfragesprache: JDOQL Verschiedene Persistenzmedien möglich Mappingbeschreibung ist proprietär JDO Vorteile Nachteile Standardisiert Sehr junger Standard Orthogonale Persistenz Relativ junge Produkte Nachladen referenzierter Objekte Relativ hoher Lernaufwand Objekt-Caching Verschiedene Persistenzmedien möglich TopLink Vorteile Nachteile Ausgereiftes Produkt Proprietär Namhafter Hersteller Relativ hoher Lernaufwand Orthogonale Persistenz (Nur relationale DB) Nachladen referenzierter Objekte Objekt-Caching Unterstützung für verschiedene Datenbanken Inhalt Das „Problem“ Lösungsansätze Vor- und Nachteile Abschluß Abschluß Persistenzframeworks können Entwicklungsaufwand einsparen Der Einarbeitungsaufwand muss bedacht werden Die Konzepte müssen „passen“ Die perfekte Lösung gibt es nicht Man kann die Datenbank nicht ignorieren