Programmieren und DBMS. Dr. Karsten Tolle

Ähnliche Dokumente
Wie kommen die Befehle zum DBMS

Wie kommen die Befehle zum DBMS

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

Teil 2-7. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II

embedded SQL Embedded SQL wurde erstmals im SQL92- Standard definiert.

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Daten Bank. 6. Vorlesung

Daten Bank. 4. Vorlesung. Dr. Karsten Tolle PRG2 SS 2012

Daten Bank. 6. Vorlesung

Datenbanksysteme I Übung: JDBC. Jana Bauckmann

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Daten Bank. 4. Vorlesung. Dr. Karsten Tolle PRG2 SS 2012

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Willkommen. Datenbanken und Anbindung

Datenbanksysteme I Datenbankprogrammierung Felix Naumann

Objektorientierte Datenbanken

Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC

Java: MySQL-Anbindung mit JDBC.

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

Webbasierte Informationssysteme

vs. Fehler zur Übersetzungszeit

Datenbankanwendungen (JDBC)

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

Übung Datenbanksysteme I JDBC. Thorsten Papenbrock

Datenbank und Informationssysteme

Eclipse und EclipseLink

11 Anwendungsprogrammierung

Einbettung in SQL. Zwei Prinzipien: (1) Statische Einbettung

OR-Mapping. WS2008/2009 DBIS/Dr. Karsten Tolle

Mehr Performance mit JDBC JAVA-Anwendungen und die Oracle-Datenbank. Carsten Czarski Business Unit Database Oracle Deutschland GmbH

Java-Persistenz-Architekturen. Freiberuflicher Entwickler und Autor. DOAG Konferenz 1.12.

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Softwareentwicklung mit JAVA EE

Kapitel DB:VI (Fortsetzung)

Kapitel 11: Anwendungsentwicklung

Connection Pooling. Was ist das?? Unter Connection Pooling versteht man generell die Wiederverwendung physischer Datenbankverbindungen.

Kapitel 11: Anwendungsentwicklung

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter

JDBC. Java DataBase Connectivity

Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Oracle & Java HOW TO

Client/Server-Programmierung

Klausur Datenbanken II

Datenbanken 1 für Mediennformatiker WS ODBC, JDBC und SQLJ: Datenbank-Anbindung an Anwendungsprogramme

Tag 5 Inhaltsverzeichnis

Client/Server-Programmierung

Kapitel 11: Anwendungsentwicklung

Datenbanksysteme 2011

Tag 5 Inhaltsverzeichnis

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren

Teil 2-7. Vorlesung. Modul: Programmierung B-PRG Grundlagen der Programmierung II

1a) SQL Stored Procedure via IDs

Datenbanken SQL JDBC. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 21

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Datenbanken und Internet. SS2009 DBIS/Dr. Karsten Tolle

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Programmieren für Fortgeschrittene Einführung in die Programmiersprache ABAP

Einführung in JDBC. IFIS Universität zu Lübeck

PHP- Umgang mit Datenbanken (1)

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/2013

Exercises for the course Databases and Information Systems I WS 2006/2007 Special exercise JDBC

Embedded SQL in PostgreSQL

RELATIONONALE DATENBANKEN MIT JDBC

Praktikum Datenbanksysteme

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008

Schnittstellen zur Anbindung an Datenbanksysteme

Webbasierte Informationssysteme

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Datenbanken SQL-Grundlagen JDBC SQL-Constraints. Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Datenbanken 1 Datenbanken SPO 2014 SPO 2007 Belegnummer Belegnummer

2. Datenbank-Programmierung

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen

MyCoRe > V1.0: Technische Weiterentwicklung

Ho Ngoc Duc IFIS - Universität zu Lübeck

JDO Java Data Objects

Choosing Database Technology for Object-Oriented Applications

Kapitel DB:VI (Fortsetzung)

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

2 Anlegen und Konfigurieren von Datenbanken 35

Softwareentwicklung mit Enterprise JAVA Beans

Java Database Connectivity-API (JDBC)

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Zugriff auf die Datenbank. Ulf Leser Wissensmanagement in der Bioinformatik

Migration der Datenbankzugriffsschnittstelle in Client-/Server-Systemen

Übung3. Test der Möglichkeiten des JDBC-Interfaces. Prof. Dr. Andreas Schmietendorf 1. Übung 3

Datenbanken Datenbanken 1 Belegnummer Belegnummer

Transkript:

Programmieren und DBMS Dr. Karsten Tolle

Wie kommen die Befehle zum DBMS Bisher gesehen: SQL direkt zum DBMS MySQL Workbench / HeidiSQL Kommandozeile Weitere?

Datenbank Administrator Fortgeschrittener Benutzer Programmierer Einfacher Benutzer Programme Schema Modifikationen DDL DML DDL Compiler Query Prozessor Transaktions Manager Unser Fokus heute! DBMS Datenbank Manager Daten Metadaten

LIVE in ECLIPSE

embedded SQL Embedded SQL (abgekürzt: ESQL) ist eine Spracherweiterung von SQL, mit der es möglich ist, SQL-Anweisungen innerhalb einer strukturierten oder objektorientierten Programmiersprache (der Hostsprache) auszuführen. Embedded SQL wurde erstmals im SQL92- Standard definiert.

Hostsprachen <embedded SQL host program> ::= <embedded SQL Ada program> <embedded SQL C program> <embedded SQL COBOL program> <embedded SQL Fortran program> <embedded SQL MUMPS program> <embedded SQL Pascal program> <embedded SQL PL/I program> Siehe Seite 489 - http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

Embedded SQL und C - Beispiel EXEC SQL BEGIN DECLARE SECTION; char diebar[21], dasbier[21]; float preis; EXEC SQL END DECLARE SECTION; /* holen der Werte für diebar und dasbier */ EXEC SQL SELECT price INTO :preis FROM Verkauft WHERE bar = :diebar AND bier = :dasbier; /* die Variable preis kann nun verwendet werden*/

DB LIB DB STD LIB Prüft gegen die DB Quelltext mit SQL-Befehlen Precompiler Quelltext in reiner host language Objektdatei Ausführbares Programm Compiler Linker

Precompiler pro/cons zusätzlicher Schritt beim Kompilieren (-) Wechsel der DB kann erneutes precompile/compile erzwingen (-) Validierung und Binding der SQL-Anfragen kann zur Kompilier-Zeit erfolgen (+) dazu muss die Datenbank existieren (-)

SQLJ Benötigt Präcompiler des DBMS-Herstellers! Überprüfungen durch Präcompiler Syntax und Semantik (DB-Objekte richtig geschrieben?) Schreibweise kompakter als JDBC Während der Laufzeit wird JDBC verwendet! Plattformunabhängig

SQLJ - Beispiel #sql cur0 = {SELECT * FROM org}; while (true) { // retrieve and display the result from the SELECT statement #sql {FETCH :cur0 INTO :deptnumb, :deptname, :manager, :division, :location}; if (cur0.endfetch()) { break; } System.out.println(" " + Data.format(deptnumb, 8) + " " + Data.format(deptname, 14) + " " + Data.format(manager, 7) + " " + Data.format(division, 10) + " " + Data.format(location, 14)); } cur0.close(); // close the cursor

Performance Vergleich Quelle: IBM (https://www.ibm.com/developerworks/jp/data/library/dataserver/techdoc/javaperform.html )

CLI Call Level Interface Das Call Level Interface (kurz CLI) ist eine Datenbankschnittstellen-Spezifikation für den Zugriff auf RDBMS (baut auf SQL auf) aus anderen Anwendungen heraus. Weitere Details unter: https://publications.opengroup.org/standards/data-mgmt/c451

Anwendung 1 Elementare Zugriffsoperationen Anwendung 2 Elementare Zugriffsoperationen Anwendung 3 Elementare Zugriffsoperationen Anwendung 1 Zugriffsoperation en in Progr.- Sprache enthalten Anwendung 2 Zugriffsoperation en in Progr.- Sprache enthalten Call Level Interface Anwendung 3 Zugriffsoperation en in Progr.- Sprache enthalten Datenbank- Managementsystem (DBMS) DBS Datenbank- Managementsystem (DBMS) DBS Datenbank (DB) Datenbank (DB)

Vorteile CLI zu ESQL Kein Precompiler nötig. Vorteil für Client/Server Architektur, da unabhägig(er) von Zieldatenbank Anwendung 1 Anwendung 2 Anwendung 3 Call Level Interface Oracle driver IBM DB2 driver Oracle IBM DB2 Datenbank (DB) Datenbank (DB)

Programmierschnittstellen, die das CLI- Konzept umsetzen, sind z.b.: Open Database Connectivity (ODBC), Java Database Connectivity (JDBC).

Java Database Connectivity JDBC 1.0 (1997) jdbc.sql.* als optionales Paket Basierend auf SQL92 JDBC 2.0 java.sql.* in JSE2 * (batch-updates, SQL3-Datentypen) javax.sql.* (optional - ab Java 1.3 fest) enthält Data- Source (JNDI - Java Naming and Directory Interface), Connection-Pooling, verteilte Transaktionen JDBC 2.0 Treiber sind für die fast alle (bekannteren) RDBMS vorhanden * Java 2 Standard Edition (JSE2) auch Java2

Java Database Connectivity JDBC 3.0 Teil von Java 1.4 - neu unter anderem: Savepoints in Transaktionen, Wiederverwendung von PreparedStatements, JDBC-Datentypen BOOLEAN und DATALINK, Abrufen automatisch generierter Keys, Änderungen von LOBs (Large Objects) und mehrere gleichzeitig geöffnete ResultSets JDBC 4.0 (aktuell 4.3 https://jcp.org/aboutjava/communityprocess/mrel/jsr221/index3.html) Teil von Java 1.6 neu hier: Annotationen für SQL-Queries, Treiber werden wenn vorbereitet automatisch angemeldet, XMLDatentypen aus SQL:2003, Zugriff auf die SQL ROWID Details unter: https://www.oracle.com/technetwork/java/overview-141217.html

Java Praxis - DriverManager 1. JDBC Treiber für DBMS in Classpath aufnehmen, Beispiel: set JDBC_Driver="C:\MySQL\mysql-connector-java-3.1.6-bin.jar" java classpath %JDBC_Driver% MyAnwendung 2. Treiber im Program laden und aktivieren, Class.forName() is not needed since JDBC 4.0. Beispiel: try { Class.forName(jdbcdriver); } catch (Exception e) {} 3. Verbindung herstellen, Beispiel: try { Connection con = DriverManager.getConnection("jdbc:mysql:///db1", "user", "pw ); } catch (Exception e) {}

Java Praxis 4. SQL Statement (Objekt) erzeugen Statement stmt = con.createstatement(); 5. SQL Anfrage erzeugen und an DBS schicken: ResultSet rs = stmt.executequery( select * from mytable ); 6. Mit dem Ergebnis arbeiten: while (rs.next()) { String name = rs.getstring( Name ); System.out.println( Name = +name); }

Java Praxis DataSource Alternative für Web Server // Get an initial JNDI context for locating the driver and // database Context ctext = new InitialContext(); // Get a DataSource object for the driver and database // associated with a logical name DataSource ds = (DataSource)ctext.lookup("jdbc/my_DB"); // Now, get the connection Connection conn = ds.getconnection(); Vorteil der Nutzung des javax.sql.datasource Interfaces ist, dass die Zugangsdaten für die Datenbank (URL, Benutzername, Passwort) nicht hart kodiert werden müssen, sondern in einer Konfigurationsdatei ausgelagert werden können. Dies erleichtert den Wechsel auf eine andere Datenbank- Instanz. Siehe auch: http://www.w3processing.com/index.php?submenuload=jdbc/datasourceconnection.php

Code auf der DB-Server Seite Stored Funtions, Stored Procedures, Trigger SQL-Statements werden auf der Serverseite gehalten Schleifen, Bedingungen etc. vorhanden (aber Syntax oft abh. vom DBMS!) Wann insb. ist dies von Vorteil? Tutorials: http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx

einfache Stored Procedure

// Beispielaufruf aus Java CallableStatement cstmt = con1.preparecall("{call personal()}"); boolean hadresults = cstmt.execute(); if (hadresults) { ResultSet rs = cstmt.getresultset();

Vorgehen bisher Erstellen eines ER-Diagramms Übersetzen in das relationale Datenmodell Zugriff auf das relationale Datenmodell aus z.b. Java ER rel. Modell OO Sprache Person Person

Object-relational Impedance Definition Mismatch Der Object-relational Impedance Mismatch (kurz: IM) bezeichnet die Unverträglichkeit zwischen dem relationalen Datenmodell und dem objektorientierten Programmierparadigma.

Probleme Rel. Modell OO Identität Primary Key / Daten Object Identifier (intern) Generalisierung Datenkapselung Beziehungen zwischen Objekten Interaktionen zwischen Objekten Wird nicht direkt unterstützt! Wird nicht direkt unterstützt! Teilweise durch Foreign Keys Wird nicht direkt unterstützt! Vererbung enthalten Zugriff nur über Methoden über Methoden, Attribute über Methoden Trigger und Stored Procedures können dies teilweise simulieren! weiterführende Literatur: http://www.cs.utexas.edu/~wcook/drafts/2005/pldbproblem.pdf

Java - Serializieren Serializieren := Speichern eines Objektes auf einen Festspeicher. Man spricht auch von deflating oder marshalling. Deserializieren (inflating oder unmarshalling) := wieder Laden Serializieren via Java: Alle relevanten Objekte müssen das Interface java.io.serializable implementieren.

Unmarshalling, Hydrating or Object Retriving bezeichnet den Vorgang aus einem Abfrageergebnis konkrete Objekte zu erzeugen. select * from Mitarbeiter where PNR > 12;

Hilfe? wie kann man automatisiert Zustände von Objekten zur Datenbank synchronisieren? Abbildungen und Object Retrival handhaben? das ganze effizent gestalten? DB Prog.

anderer DBMS Ansatz DB Prog. Probleme würden hinfällig, wenn man eine OO-Datenbank nutzen würde Viele DBMS bieten OO-Features an, man spricht auch von ORDBMS (Objektrelationales Datenbankmanagementsystem) z.b. Oracle, IBM DB2

OR-Mapper DB OR-Mapper Prog. Framework Java Persistence API (JPA) Hibernate (Nhibernate für.net) Beschreibung Ist eine Schnittstelle für die objektrelationale Abbildung von POJOs (Plain old Java Object). Wurde im Rahmen der EJB 3.0 von der Software Expert Group als Teil der JSR 220 entwickelt und herausgegeben. Sie soll die besten Ideen der APIs von Hibernate, Toplink und JDO beinhalten. Open-Source Framework für Java entwickelt von der JBoss Community. Setzt auch die JPA um (Hibernate EntityManager). Hibernate wird von den meisten als die Referenz für die Lösung des IM im Open-Source- Bereich für Java gesehen.

EJB Enterprise Java Bean Standardisierte Komponente innerhalb JEE (Java Platform Enterprise Edition)

EJB Enterprise Java Bean

Praxis / Live mit NetBeans Version 8 (mit Glassfish- Server)

NetBeans Tutorials and Links Übersicht JEE: https://netbeans.org/kb/trails/java-ee.html E-Commerce Tutorial (Web-Shop): https://netbeans.org/kb/docs/javaee/ecommerce/intro.html History zu Netbeans: https://de.wikipedia.org/wiki/netbeans_ide