EsprIT Esprit Database Suite Eine leistungsfähige Java-Persistzenzschicht zur einfachen Programmierung von Datenbankapplikation. 1 EsprIT Inhalt Einfache und leistungsfähige Datenbank-Persistenzschicht Objekt-relationale Abbildung mit DBObjects Automatische Erzeugung der DBObjects Lokaler oder entfernter Datenbank Zugriff Vielfach-Verbindungen mit ConnectionPool GUI Darstellung in Tabellen, Listen und Formblättern Zusammenbau komplexer, persistenter Objekte Allgemein verwendbare Datenbank Tools Einsatzfelder für DBObjects Wichtigste Vorteile der DBObjects Vergleich mit anderen Persistenz-Lösungen 2 EsprIT DBObjects DBObjects sind Java Objekte die Datensätze modellieren • DBObject Subklassen werden automatisch erzeugt für jede Tabelle: Tabelle: resistor Klasse: DBO_resistor.java • DBObjects implementieren die Objekt-relationale Abbildung • Flexibel bei Datenbank-Änderungen (lediglich Neuerzeugung) 3 EsprIT Erzeugung der DBObjects DBObjects werden automatisch erzeugt mit dem DBOCompiler DBOCompiler liest die Tabellen Metadaten und erzeugt die DBObject Java Quelldateien. Für alle Tabellen der Datenbank werden Java Quelldateien erzeugt. Läuft entweder interaktiv oder im Batchmode 4 EsprIT Datenbank Zugriff DBObjects ‘wissen‘ selbst wie sie mit der Datenbank kommunizieren müssen • Kein SQL erforderlich => Fehlersicher and RDBMS unabhängig. • Hoch performante Datenbank Zugriffe (gecachte Prepared Statements) • Einfachstes Lesen von und Speichern in der Datenbank. INSERT DBO_resistor DBO_resistor DBO_resistor UPDATE Datenbank DELETE 5 SELECT DBO_resistor DBO_resistor DBO_resistor EsprIT Lokaler/entfernter Zugriff Unterstützung für lokalen und entfernten Datenbank Zugriff • DBObjects können leicht übers Netz transportiert werden. • Clients können lokale oder entfernte Datenbankaktionen durchführen Entfernter Zugriff Client 1 DBO_resistor Middleware Server Datenbank Client 2 DBO_poti Lokaler Zugriff 6 EsprIT Connection Pool Connection-Pool verwaltet vielfache Datenbank-Verbindungen • Ermöglicht simultane Transaktionen (soviele, wie Verbindungen vorhanden). • Dynamisches Pooling: Anzahl der Verbindungen steigt und fällt nach Bedarf (im erlaubten Bereich). DBO_resistor DBO_diode Connection Pool DBO_poti 7 Datenbank EsprIT Datensatz Formulare Erzeugt automatisch Formulare zum Editieren der Datensätze • DBObjects ‘kennen‘ ihre Datenbank Meta-Information • Insert/Edit-Formulare werden dynamisch aus Metadaten erzeugt • Keine Programmierung erforderlich für unten gezeigte Beispiele • Formulare sind leicht an Kundenbedürfnisse anpassbar Erzeugen eines neuen Datensatzes Ändern eines existierenden Datensatzes 8 EsprIT Tabellen-Sicht Tabellen-Sicht wird automatisch erzeugt • DBObjects ‘wissen‘ wie sie sich in einem GUI darstellen müssen • Tabellen-Sicht wird dynamisch aus Metadaten erzeugt • Keine Programmierung erforderlich für das unten gezeigte Beispiel • Darstellung ist leicht an Kundenbedürfnisse anpassbar 9 EsprIT Listen-Sicht Listen-Sicht wird automatisch erzeugt • Listen-Sicht wird dynamisch aus Metadaten erzeugt • Keine Programmierung erforderlich für das unten gezeigte Beispiel • Darstellung ist leicht an Kundenbedürfnisse anpassbar 10 EsprIT Tabellen/Listen-Editor Tabellen and Listen unterstützen insert/update/delete von Datensätzen Wählen Sie den Typ des Datensatzes Formblatt für den gewünschten Datensatz-Typ zur Eingabe neuer Datensätze Formblatt zum Editieren des selektierten Datensatzes 11 EsprIT Daten Eingabefelder Eingabefelder für alle üblichen Datentypen Datum/Zeit Eingabe Formblatt mit einigen beispielhaften Eingabefeldern Datei Auswahl 12 EsprIT Persistente Objekte DBObjects zum Aufbau komplexer, persistenter Objekte DBObjects sind Bausteine zum Zusammebau größerer Objekte Einheitlicher Datenbankzugriff => Konsistenter Java Code Kein Aufwand für GUI Darstellung persistenter Objekte Unterstützung mehrerer Zusammenbau-Typen (1:N, Vererbung) Poti (extends ComposedRecord) Route (extends ComposedRecord) DBO_part DBO_route DBO_resistor DBO_poti DBO_poti DBO_poti DBO_vertex DBO_poti Vererbungs-Typ Listen-Typ (1:N) 13 EsprIT Datenbank Tools Allgemein verwendbare Datenbank Tools Funktionieren genau gleich für alle unterstützten Datenbanksysteme! DBExecute Führt SQL Kommando(s) in Datenbank aus DBSelect Macht SQL Datenbank Abfrage(n), Ausgabe in Datei oder Console UnlExport Schreibt Tabellendaten in ASCII Datei (UNL Format) UnlImport Liest Datensätze aus UNL Dateien und füllt Datenbanktabelle 14 EsprIT Einsatzfelder Wo kann man DBObjects einsetzen? Server Applikationen Für vielfach parallelläufigen Datenbankzugriff (Multi-Threaded services) Client Applikationen Direkte Darstellung von Datensätzen in GUI Tabellen und Listen Einfache Datenübertragung von/zu Server (Serialisierung) Lokaler oder entfernter Zugriff auf Datenbank Web Applikationen Als Datenbank Access Objects (DAOs) Als DAO-Beans im Zusammenspiel mit Struts J2EE Applikationen Als EJB's (EntityBeans) mit Bean managed Persistence 15 EsprIT Vorteile Wichtigste Vorteile Kein Aufwand für objekt-relationale Abbildung Einheitlicher, konsistenter Java Code, leicht zu warten Sehr flexibel und fehlersicher bei Datenbank-Änderungen Kein Aufwand für GUI Darstellung persistenter Objekte Beschleunigt erheblich die Enwicklung von Datenbankanwendungen Keine Abhängigkeit von Datenbank- und Betriebs-System Speicher-effizient und hochperformant Wesentlich geringere Entwicklungszeiten und -Kosten Einfache Wartung und hohe Fehlersicherheit Geeignete Technologie zur Ablösung alter 4GL Anwendungen! 16 EsprIT Vergleich mit anderen Was unterscheidet DBObjects von anderen Persistenz-Lösungen? • DBObjects werden direkt aus der Datenbank erzeugt. Keine (redundante) vorbereitende Definition erforderlich! • Pure Java Objekte – Kein post-Compiling der Klassen erforderlich (wie z.B. bei JDO Implementierungen) • Keine komplizierten Deployment-Deskriptoren etc… (wie bei JDO oder container managed EntityBeans) • Keine Abhängigkeit von Datenbank, Betriebssystem, Applikationsoder Webserver • Komplexe, persistente Objekte können aus DBObject-Bausteinen zusammengesetzt werden => Einfacher und einheitlicher Code. • Die Programmierung mit DBObjects ist besonders einfach • DBObjects sind per se direkt im GUI darstellbar 17