Dr. Brigitte Mathiak WeST – Web Science & Technologies Kapitel 6 Anbindung an Anwendungen.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Object Relational Mapping
Objektrelationales Mapping mit JPA
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
Blue J.
1 Kapitel 9: Datenbankapplikationen. 2 Datenbankapplikationen MS Access Embedded SQL JDBC Application JDBC Applet Java Servlet Java Server Pages Cold.
Datenbanken Einführung.
JPQL Java Persistence Query Language
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Internet-Datenbanken
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Objektorientierter Entwurf (OOD) Übersicht
Anbindung an Anwendungen
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Internet-Datenbanken Grundlagen des WWW HTML HTTP Web-Anbindung von Datenbanken Servlets JSP JDBC XML Datenmodell Schemabeschreibungssprachen Anfragesprachen.
Java: Objektorientierte Programmierung
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
XDoclet ETIS SS05.
Programmieren mit JAVA
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte
JDBC EDV JDBC.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Java Data Objects (JDO) und Implementierung in FastObjects.
J2EE Conformance von JDBC Middleware und EJB Applikation Server Detlef KünzelSystemberater +49 (0)
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
XML – Grundlagen und Anwendungen Teil 6: Verarbeitung von XML-Dokumenten: XSLT Prof. Dr. Michael Löwe, FHDW Hannover.
JDBC: JAVA Database Connectivity
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Herzlich Willkommen… welcome… soyez la bienvenue….
Wir bauen uns eine Webapplikation!
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Sesame Florian Mayrhuber
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #3 ER Modellierung.
JDBC (Java DataBase Connectivity)
Tose – Gruppe Applikation
Esprit Database Suite Eine leistungsfähige Java-Persistzenzschicht zur einfachen Programmierung von Datenbankapplikation.
Referent: Stephan Metzler
Relationales Datenmodell und DDL
XML und Datenbanken © 2006 Markus Röder
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Torque robert.resch-wolfgang.schneider. uebersicht Was ist Torque Komponenten von Torque Generator Erzeugte Klassen Methoden Torque in Turbine Demobeispiel.
Hibernate (OR-Mapping)
Datenbankanbindung mit
Mind the Gap Die semantische Lücke zwischen Objekten und Relationen.
Generative Softwareentwicklung in der Praxis Olaf Kaus, „Java User Group“, Hannover 6.Oktober 2003.
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf.
Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013.
DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH
Tutorium Software-Engineering SS14 Florian Manghofer.
 Präsentation transkript:

Dr. Brigitte Mathiak WeST – Web Science & Technologies Kapitel 6 Anbindung an Anwendungen

Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen2 Lernziele Das grundsätzlichen Problem bei der Kopplung von objektorientierten Programmiersprachen mit relationalen Datenbanken kennenzulernen Konzepte zur Anbindung von Datenbanken an Applikationen Selbst einfache Datenbankanbindungen programmieren zu können Die grundlegende Funktionsweise von Persistenz

Impedance Mismatch zwischen OO und RM Ein Objekt wird definiert durch: Identität Zustand Verhalten Kapselung Eine Relation enthält Aussagen mit dem Wahrheitswert TRUE. Beispielsweise: Es gibt einen PROFESSOR namens Sokrates, dieser hat den RANG C4 und arbeitet im RAUM 226. Beides ist nicht trivial kompatibel. Warum? Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen3

Impedance Mismatch zwischen OO und RM (2) Struktur: Dieses Problem haben wir bereits in Kapitel 3 kennengelernt, um von UML ins Relationenmodell zu kommen RM hat keine Vererbung, kein Verhalten, keine 1-zu-n oder gar n-zu-n Beziehungen Identität: Tupel haben von sich aus keine eindeutige Identität. Datenkapselung: Objekte können selbst bestimmen wie sie verändert werden Arbeitsweise: Relationen arbeiten global transaktionsbasiert Objekte sind untereinander vernetzt Ergebnismenge: SQL-Anfragen liefern (Multi-)Mengen, keine Objekte Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen4

Die gute Nachricht Alle diese Probleme sind im Einzelfall lösbar. Die schlechte Nachricht Entweder man muss Einschränkungen bei den Objekten hinnehmen, die persistent sein sollen, oder es wird sehr kompliziert und/oder unperformant. (Oder man nimmt eine nicht-relationale Datenbank.) Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen5

Die einfache Lösung: Datenbanktreiber Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen6

Aus Programmierersicht Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen7 DriverManager Driver Connection Statement ResultSet Software zur Verbindung mit einem speziellen RDBMS (z.B. Oracle) registriert sich Verwaltet die geladenen Treiber erstellt Die Verbindung zur Datenbank Ein SQL-Statement überträgt liefert Das Ergebnis des Statements

Aus Programmierersicht Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen8 DriverManager Driver Connection Statement ResultSet registriert sich erstellt überträgt liefert Class.forName (Drivername); Connection con = DriverManager.getConnection( DBurl, user, password); Statement st = con.createStatement(); ResultSet results = st.executeQuery(query); st.close(); con.close();

Auslesen von Resultaten String query = SELECT PersNr, Name FROM Professoren WHERERang= 'C4';; ResultSet results = st.executeQuery(query); while (results.next()) { int persNr = results.getInt(1); String name = results.getString(2); workWith(persNr,name); } Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen9

Nachteile von Treibern Kein Syntax-Check des SQL-Statements Es kann nicht über Statement-Grenzen hinweg optimiert werden. (Tatsächlich gibt es die Möglichkeit per PreparedStatement ein Statement wiederzuverwenden, was sehr äußerst positiv auf die Performance auswirkt. ) Es werden keine Objekte abgespeichert, sondern nur simple Types Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen10

Spracheinbettung (z.B. SQLJ) Beispiel: #sql [ctx] { SELECT MAX(SALARY), AVG(SALARY) INTO :maxSalary, :avgSalary FROM DSN8710.EMP }; Spracheinbettungen und 4GL-Sprachen bieten eine bessere Integration, weil das SQL direkt im Quellcode steht Ein Präprozessor übersetzt die eingebettete Befehle und fängt damit auch Syntax-Fehler ab Weiterer Vorteil: Variablen können besser eingesetzt werden Hauptnachteil: Sehr geringe Unterstützung von anderen Produkten, da Spracheinbettungen als altmodisch gelten Die Sprache selbst wird verändert, dies kann zu Inkompatibilitäten mit anderen Präprozessoren führen Debugging deutlich schwieriger machen Fazit: Nicht mehr state-of-the-art Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen11

Persistenzframeworks Grundidee: Transparente Persistenz von Objekten durch Mapping zwischen Objekten und Relationen Vorgehen: Der Zustand einfacher Java Objekte (POJOs) wird vom Framework in der Datenbank festgehalten Vorteil: Der Programmierer kann mit den Objekten normal arbeiten Weiterer Vorteil: Das Mapping ist nicht mehr implizit in der Geschäftslogik versteckt, sondern wird explizit angegeben Netter Nebeneffekt: Die Aufteilung in Domänenklassen, die persistiert werden, und in andere Klassen entspricht dem MVC- Programmierparadigma Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen12

Persistenzframeworks (Beispiel Hibernate) Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen13 Das Modell wird in Domänenklassen festgehalten (EJBs) Der Zugriff auf die EJBs erfolgt von Applikationsseite aus über DAOs (Data Access Objects) zur Entkopplung Hibernate selbst greift auf die Domänenklassen per Reflection zu Das Mapping zwischen Objekten und Datenbank wird durch XML-Dateien festgelegt (oder Annotations) Der Zugriff auf die Datenbank geschieht per JDBC Die Konfiguration sowohl des Datenbankzugriffs als auch des Verhaltens von Hibernate wird zentral verwaltet

Persistenzframeworks (Beispiel Hibernate; Domänenklasse) Beispiel einer Domänenklasse: // Markiert die Klasse als // Der Default Tabellenname wäre ( name = Professoren) public class Long PersNr; // Jede Klasse sollte eine ID haben String Name; String Rang; Long Raum; // leerer public Konstruktur ist notwendig für Entities public Professoren(){}; /* getter und setter … */ } Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen14 Professoren PersNrNameRangRaum 2125SokratesC RusselC4232

Persistenzframeworks (Beispiel Hibernate; DAO) Beispiel eines DAOs: Hinweis: getHibernateTemplate() kommt aus DAO public class ProfessorDAOHibernate extends DAO implements ProfessorDAO{ public void saveProfessor(Professor toSave){ getHibernateTemplate().saveOrUpdate(toSave); } public Professor getProfessorByPersNr(int PersNr){ return (Professor) getHibernateTemplate(). get(Professor.class, PersNr); } public void deleteProfessor(Professor toDelete){ getHibernateTemplate().delete(toDelete); } Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen15 Professoren PersNrNameRangRaum 2125SokratesC RusselC4232

Persistenzframeworks (Beispiel Hibernate; weiterführend) Komplexe Anfragen können sowohl über die Hibernate eigene Anfragesprache HQL als auch SQL gemacht werden Es werden mehrere Methoden angeboten 1-zu-n und n-zu-n Beziehungen in der Datenbank darzustellen Sowohl andere Objekte als auch Collections werden als Attribute akzeptiert Allerdings muss ein Mapping explizit angegeben werden Es gibt viele Tools, die den Einstieg in Hibernate erleichtern und viele der benötigten Dateien automatisch generieren Domänenklassen können aus der Datenbank erzeugt werden Standard DAOs können generiert werden Das Datenbankschema kann aus den Domänenklassen generiert werden Etc. Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen16

Nachteile Persistenzframeworks Relativ großer Overhead für kleine Projekte Kein direkter Zugriff auf die Datenbank Alles muss in Objekten gespeichert werden Weniger Quellcode in der Persistenzschicht (-> weniger Fehler) Viele Konfigurationsoptionen um z.B. die Performanz zu optimieren Hervorragende Umsetzung von loser Kopplung zwischen den Komponenten Modell und Persistenz Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen17 Vorteile Persistenzframeworks

Fazit Es gibt verschiedene Möglichkeiten Anwendungen an eine relationale Datenbank anzubinden Das Hauptproblem ist dabei der Impedance Mismatch zwischen objektorientierter und relationaler Welt Der einfachste Weg ist es direkt per Treiber mit der Datenbank zu kommunizieren Eine etwas bessere Integration bieten Spracheinbettungen Persistenzframeworks erlauben es das Mapping zwischen den Objekten und der Datenbank festzulegen. So kann der Programmierer direkt mit den Objekten arbeiten. Datenbanken, WS 2012/13 Kapitel 6: Anbindung an Anwendungen18