Datenbanken Objektrelationales Mapping Spezifikation

Größe: px
Ab Seite anzeigen:

Download "Datenbanken Objektrelationales Mapping Spezifikation"

Transkript

1 Datenbanken Objektrelationales Mapping Spezifikation Ziel: Automatische Abbildung von Java-Klassen auf relationale Datenbanktabellen Damit verbunden: Vereinfachung der Applikationsprogrammierung Insbesondere: Datenmanipulationen ohne komplexe SQL-Statements Spezifikation: Java EE 5 application server + Reference Implementation (Glassfish) Java Persistence API (JPA) + Reference Implementation (Toplink Essentials) Java Persistence API (JPA) + Reference Implementation (Eclipselink) Download: Prof. Dr. Günter Brackly 1

2 D A T E N B A N K n Person persnr name Adresse adrnr plz Hobbies DBPersonen 1 J n n n hnr hobby Ausbildungen anr von Beruf bnr begonnen persnr private Collection <DBAdresse> adressen; DBAdressen Prof. Dr. Günter Brackly 2 adrnr private DBPersonen person; DBHobbies hnr private DBPersonen person; usw. P A - A N W E N D U N G

3 Vorgehensweise bei der Benutzung des JPA: 1. Java J2EE 5 oder höher installieren; 2. Eine Realisation der JPA-Spezifikation installieren (Eclipselink, Toplink,..); 3. Normale Applikationsklassen schreiben (POJOs: Plane Old Java Objects); 4. Diejenigen Klassen, die den Tabellen in der Datenbank entsprechen, annotieren (das ist das OR-Mapping); 5. Eine Datei Persistence.xml erzeugen, in der i) die Klassen aufgeführt sind, die persistente Objekte haben dürfen; ii) die Verbindungsinformationen stehen; Dadurch wird eine Persistence-Unit erzeugt für s Speichern in der Applikation. Prof. Dr. Günter Brackly 3

4 Vorgehensweise bei der Benutzung des JPA: 6. Mit der Persistence-Unit kann eine EntityManagerFactory erzeugt werden, die in der Applikation die Persistenz regelt: EntityManagerFactory emf = Persistence.createEntityManagerFactory( ); 7. Über die EntityManagerFactory erzeugt man einen EntityManager, der die Datenbank-Kommunikation behandelt: EntityManager em = emf.createentitymanager(); Prof. Dr. Günter Brackly 4

5 Vorgehensweise bei der Benutzung des JPA: 8. Ein EntityManager (em) kann: - Transaktionen instanziieren: EntityTransaction etrans = em.gettransaction(); Transaktionen müssen explizit gestartet und geschlossen werden: etrans.begin(); DB-Kommunikation etrans.commit(); bzw. etrans.rollback(); - Querys der JPQL ausführen: em.createquery( ); - Objekte (Datensätze) über den annotierten PK finden: em.find(..); - Objekte in annotierten Tabellen speichern: em.persist(objekt); - Objekte (Datensätze) aus der Datenbank löschen: em.remove(objekt); Prof. Dr. Günter Brackly 5

6 Beispiel 1: (name="adresse") public class DBAdresse (name="adrnr") private int adrnr; private String plz; private String ort; private String str; private (name="persnr") private DBPersonen person; }... Prof. Dr. Günter Brackly 6

7 Beispiel 2: import java.util.*; public class DBPersonen { (name="persnr") private int persnr; private String name; private String (mappedby="person", cascade=cascadetype.persist) private Collection <DBAdresse> (mappedby="person", cascade=cascadetype.persist) private Collection<DBBeruf> (mappedby="person", cascade=cascadetype.persist) private Collection <DBHobbies>hobbies; Prof. Dr. Günter Brackly 7

8 Entities annotieren Ganz normale Java-Anwendungsklassen (POJOs) schreiben; Diejenigen Klassen, die Tabellen in der Datenbank entsprechen, als public class DBPersonen { } Nur die Klassen, die annotiert sind, können Objekte speichern! Entities, d.h. potenziell speicherbare Objekte sollten nur innerhalb einer Transaktion erzeugt, aktualisiert oder gelöscht werden! Prof. Dr. Günter Brackly 8

9 Entities annotieren Primärschlüssel-Attribut und seine Werte-Erzeugung (name="persseq", sequencename="persnr_seq", private int persnr; Durch diese Annotation des Primary Key der Tabelle wird zusätzlich zum OID des Objekts auch der PK als Persistence Identifier für das Entity-Objekt bereit gestellt. Dann kann die Methode find() des EntityManagers über diesen Persistence Identifier die Datensätze aus den Tabellen sammeln und als Objekte (Entities) der Applikation zur Verfügung stellen. Prof. Dr. Günter Brackly 9

10 Entities annotieren Alle Entities müssen java.util.date statt java.sql.date verwenden. Alle dauerhaft zu speichernden Attribute vom Type java.util.date müssen als Temporal annotiert private java.util.date gebdat; Diese Annotation definiert dann in der Realisation (eclipselink) eine Abbildung von util.date auf sql.date und umgekehrt. Prof. Dr. Günter Brackly 10

11 Beziehungen annotieren Es können 1:1, 1:n, n:1 oder n:m Beziehungen annotiert werden. Bei den ersten drei dieser Beziehungstypen muss unterschieden werden zwischen einer unidirektionalen bzw. einer bidirektionalen Beziehung: - unidirektional: nur von einem der beteiligten Entities wird die Beziehung aufgebaut. - bidirektional: von beiden beteiligten Entities wird die Beziehung zum jeweils anderen Entity aufgebaut. Bidirektionale Beziehungen sind eigentlich zwei unidirektionale Beziehungen, jeweils vom anderen Entity aus, und werden auch genau so als zwei unidirektionale Beziehungen zwischen diesen Entities annotiert! Prof. Dr. Günter Brackly 11

12 Beziehungen annotieren Bestimmend für die Modellierung einer Beziehung zwischen Entities ist ihre Modellierung in der Datenbank! Das Entity, dessen Tabelle den Foreign Key enthält, ist der Besitzer der Entity Beziehung. In diesem Entity wird eine joincolumn annotiert, eben der FK. Beispiel: (die n:1 Beziehung zwischen Adressen Adresse") persnr ) private DBPerson person; Dies ist eine unidirektionale Annotation einer n:1 Beziehung. Prof. Dr. Günter Brackly 12

13 Beziehungen annotieren Soll die Beziehung bidirektional modelliert werden, muss auch beim DBPersonen-Entity eine OneToMany Annotation erfolgen, und zwar als Inverse zur ersten Beziehung! In der Datenbank hat die Tabelle Person aber keinen FK! Deshalb kann beim Entity keine joincolumn Annotation verwendet werden. Statt dessen wird eine inverse Beziehung über die Annotation mappedby beschrieben, die Bezug nimmt auf das Beziehungsattribut person im Besitzer-Entity DBAdresse: Beispiel: (die 1: n Beziehung zwischen Personen und class person ) private Collection<DBAdresse> adressen; Prof. Dr. Günter Brackly 13

14 Beziehungen annotieren unidirektionale 1:1 - Beziehung zwischen zwei Entities class (name="persnr") private DBPersonen person; bidirektionale 1:1 - Beziehung zwischen zwei Entities annotieren: Zusätzlich zur obigen class DBPersonen ="person") private DBBankaccount bank; Prof. Dr. Günter Brackly 14

15 Beziehungen annotieren unidirektionale n:1 - Beziehung zwischen zwei Entities class (name="persnr") private DBPersonen person; bidirektionale 1:n - Beziehung zwischen zwei Entities annotieren: Zusätzlich zur obigen class DBPersonen (mappedby="person", cascade=cascadetype.persist) private Collection <DBAdresse> adressen; Prof. Dr. Günter Brackly 15

16 Beziehungen annotieren n:m - Beziehung (nur bidirektional) zwischen zwei Entities class DBVerein private Collection <DBPersonen> class DBPersonen (mappedby="mitglieder") private Collection <DBVerein> vereine; Prof. Dr. Günter Brackly 16

17 Beziehungen annotieren n:m - Beziehung (nur bidirektional) zwischen zwei Entities class DBVerein private Collection <DBPersonen> class DBPersonen (mappedby="mitglieder") private Collection <DBVerein> vereine; Keines der beiden Entities besitzt ein join-attribut zum jeweils anderen Entity, d.h. diese ManyToMany - Beziehung kann nur implementiert werden mit einer zusätzlichen weiteren Join-Tabelle! Da beide Entities gleichberechtigt sind in dieser n:m Beziehung, ist es egal bei welchem Entity diese Join-Table annotiert wird! Prof. Dr. Günter Brackly 17

18 Beziehungen annotieren n:m - Beziehung mit Beziehungstabelle zwischen zwei Entities class DBVerein private ) private Collection <DBPersonen> class DBPersonen (mappedby="mitglieder") private Collection <DBVerein> vereine; Prof. Dr. Günter Brackly 18

19 Beziehungen annotieren Problem: n:m - Beziehung mit eigenen Attributen, bzw. mehr als 2-stellige Beziehungen : Diese Art von Beziehung kann nicht über eine JoinTable annotiert werden, sondern muss als eigene assoziative Entity-Klasse modelliert werden. Beispiel: Die n:m Beziehung Halten = ({Dozent, Veranstaltung}, {semester}) n : m Die zugehörige Beziehungstabelle hat als Schlüssel {doznr, vnr, semester}, also alle Attribute. Diese Beziehungstabelle muss als eigenes Entity modelliert werden. Problem: Jede Entityklasse muss einen Persistence-Identifier ID haben, der nur aus einem Attribut bestehen darf! Hier ist der Schlüssel aber 3-elementig!! Prof. Dr. Günter Brackly 19

20 Beziehungen annotieren Folgerung: Zusätzlich zu der Beziehungs-Entity-Klasse Halten muss eine weitere Klasse HaltenPK modelliert werden, die als Attribute die Attribute des Primärschlüssels der Tabelle Halten hat. Die Entity-Klasse Halten bekommt dann als Persistence-Identifier ein Objekt vom Typ public class HaltenPK implements Serializable { private static final long serialversionuid = 1L; private int doznr; private int vnr; private String semester; } Prof. Dr. Günter Brackly 20

21 Beziehungen public class Halten implements Serializable { private static final long serialversionuid = private HaltenPK id; //bi-directional many-to-one association insertable=false, updatable=false) private Dozent dozent; //bi-directional many-to-one association insertable=false, updatable=false) private Veranstaltung veranstaltung;.. } Prof. Dr. Günter Brackly 21

22 Beziehungen annotieren Die PK-Klassen dürfen keine set-methoden haben, da die PK-Objekte nicht verändert werden dürfen. Zur Erzeugung eines PK-Objekts muss also ein Konstruktor vorhanden sein, der alle Attribute umfasst! In der zu einer PK-Klasse gehörenden Beziehungsklasse muss bei der Annotation der Beziehung der referenzierten Objekte darauf geachtet werden, dass die JoinColumn als nicht einfügbar und nicht aktualisierbar gesetzt ist (das geschieht ja über insertable=false, updatable=false) private Dozent dozent; Prof. Dr. Günter Brackly 22

23 Persistenz Alle als Entity annotierten Klassen, die auch in der persistence.xml Datei eingetragen sind, können persistente Objekte bekommen! Objekte zu solchen Klassen werden persistent, indem sie innerhalb einer Transaktion gespeichert werden: EntityTransaction tx = em.gettransaction(); tx.begin(); em.persist(person); tx.commit(); (em ist hier ein Objekt vom Typ EntityManager, eine Klasse, die im Zusammenhang mit der Persistenz benutzt wird. Siehe Folien 10 ff) Hat man ein solches Masterobjekt entsprechend annotiert, können durch em.persist(person) automatisch auch die abhängigen Tabellen mit den Werten aus den Collection-Attributen (adressen, hobbies, etc.) gefüllt werden! (Kaskadierendes (mappedby="person",cascade=cascadetype.persist) ) Prof. Dr. Günter Brackly 23

24 Persistenz Zur Persistenz wird ein Datenbanksystem und eine Persistenz-Implementierung (Eclipselink, Toplink, Hibernate, etc.) benötigt. Die notwendigen Informationen über das zugrunde liegende Datenbanksystem erhält das Anwendungsprogramm aus einer so genannten Persistence-Unit. In der Deklaration der Persistence-Unit in der Datei persistence.xml bekommt diese einen Namen, mit dem sie im Programm verwendet werden kann. Die Zuordnung des Programms zur Persistence-Unit geschieht über eine so genannte EntityManagerFactory: EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersonenDB"); (Hier wird dem Programm eine Persistence-Unit mit Namen PersonenDB zugeordnet!) Prof. Dr. Günter Brackly 24

25 Persistenz Toplink Die Persistence-Unit wird in der Datei persistence.xml deklariert : <?xml version="1.0" encoding="utf-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> <persistence-unit name ="PersonenDB"> <provider>oracle.toplink.essentials.ejb.cmp3.entitymanagerfactoryprovider</provider> <class>orelmap.dbpersonen</class> <class>orelmap.dbberuf</class> <class>orelmap.dbausbildungen</class> <class>orelmap.dbhobbies</class> <class>orelmap.dbadresse</class> <properties> <property name="toplink.jdbc.driver" value="oracle.jdbc.driver.oracledriver"/> <property name="toplink.jdbc.user" value= dau"/> <property name="toplink.jdbc.password" value= dau"/> <property name="toplink.jdbc.url" </properties> </persistence-unit> </persistence> Prof. Dr. Günter Brackly 25

26 Persistenz Eclipselink Die Persistence-Unit wird in der Datei persistence.xml deklariert : <?xml version="1.0" encoding="utf-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> <persistence-unit name ="PersonenDB"> <provider>org.eclipse.persistence.jpa.persistenceprovider</provider> <class>orelmap.dbpersonen</class> <class>orelmap.dbberuf</class> <class>orelmap.dbausbildungen</class> <class>orelmap.dbhobbies</class> <class>orelmap.dbadresse</class> <properties> <property name="eclipselink.jdbc.driver" value="oracle.jdbc.driver.oracledriver"/> <property name="eclipselink.jdbc.user" value= dau"/> <property name="eclipselink.jdbc.password" value= dau"/> <property name="eclipselink.jdbc.url" </properties> </persistence-unit> </persistence> Prof. Dr. Günter Brackly 26

27 Persistenz Hat man eine Persistence-Unit in einer persistence.xml-datei erstellt und über eine EntityManagerFactory dem Anwendungsprogramm bekannt gemacht, kann man sie in einem EntityManager benutzen, um innerhalb von Transaktionen Objekte persistent zu machen: EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersonenDB"); EntityManager em = emf.createentitymanager(); EntityTransaction tx = em.gettransaction(); tx.begin(); em.persist(pers); tx.commit(); Ein EntityManager dient also zur Synchronisation der Anwendungsobjekte mit der Datenbank! Prof. Dr. Günter Brackly 27

28 Persistenz JPA bietet mehrere Möglichkeiten der Erzeugung und Verwendung von EntityManagern und Persistence Contexts an: Container-Managed EntityManager Verfügbar nur in Java EE Application-Managed EntityManager Verfügbar für Java EE und SE Wir verwenden Application-Managed EntityManager und damit auch Application Managed Persistence Context: Konsequenz: EntityManager müssen über eine EntityManagerFactory erzeugt werden; ihr Lebenszyklus muss von der Applikation verwaltet werden: EntityManager em = emf.createentitymanager(); em.close(); Prof. Dr. Günter Brackly 28

29 Persistenz Ein EntityManager verwaltet alle in der Applikation instanziierten Entities mit einem Bezug zur Datenbank. Diese Menge der Entity-Instanzen bildet den sogenannten Persistence Context. Dazu hat das Interface EntityManager unter anderem die folgenen Methoden: persist() remove() find() refresh() createquery() gettransaction() clear() Speichern eines Objektes in der Datenbank; Entfernen eines Objekts aus der Datenbank; Finden eines Objekts aus der Datenbank über den PK; Aktualisieren eines Objekts aus der Datenbank im Programm; Erzeugen einer Query Instanz bzgl. JPQL; Implementieren des EntityTransaction Interface Auflösen der Entity-Instanzen des Persistence Context Prof. Dr. Günter Brackly 29

30 Persistenz Bei allen Beziehungen ist auch kaskadierendes Speichern und Löschen von Entities und abhängigen Entities möglich. Dies muss entsprechend bei der Entity Annotierung vermerkt class DBPersonen (mappedby="person", cascade={ CascadeType.PERSIST, CascadeType.REMOVE } ) private Collection <DBAdresse> adressen; Voraussetzung für das erfolgreiche Speichern bzw. Löschen ist dann lediglich, dass die abhängigen Entities dem Master-Entity zugeordnet sind vor dem Aufruf von persist() bzw. remove(). Wichtig: bei bidirektionalen Beziehungen muss auf beiden Seiten das Kaskadieren annotiert werden!! Prof. Dr. Günter Brackly 30

31 Persistenz / Transaktionen JPA bietet auch zwei Möglichkeiten der Verwaltung des Persistence Contexts in Transaktionen: Java Transaction API Resource-Local Transactions Transaktionen des Java EE Servers Native Transaktionen des JDBC-Treibers Application-Managed EntityManager können mit beiden Transaktionskonzepten arbeiten Wir verwenden hier das Konzept der Resource-Local Transactions Konsequenz: Transaktionen müssen von der Applikation kontrolliert und verwaltet werden! Prof. Dr. Günter Brackly 31

32 Persistenz / Transaktionen Resource-local Transactions: Implementieren: EntityTransaction trans = em.gettransaction(); Das Interface EntityTransaction stellt entsprechend dem JDBC Connection Interface unter anderen folgende Methoden zur explizitenverwaltung der Transaktionen zur Verfügung: - public void begin(); - public void commit(); - public void rollback() Prof. Dr. Günter Brackly 32

33 Persistenz / Transaktionen Synchronisation mit der Datenbank: Datensätze von Tabellen werden als Entity-Instanzen im Persistence Context von einem EntityManager verwaltet. Alle Veränderungen (Neuanlegen, Aktualisieren, Löschen) werden zunächst in der Applikation an Entity-Instanzen im Persistence Context vorgenommen. Diese Änderungen werden vom EntityManager über einen flush des Persistence Context in die Datenbank geschrieben und dauerhaft gespeichert, wenn die Entity-Transaktion committed. Die einzige andere Möglichkeit, einen solchen flush in Gang zu setzen ist der explizite Aufruf der flush() Methode des EntityManagers in der Applikation! Bei einem flush überprüft der EntityManager den Persistence Context auf neue, veränderte oder zu löschende Entities und schreibt die Änderungen über SQL- Statements des Persistence-Providers (Eclipselink, Toplink) in die Datenbank. Prof. Dr. Günter Brackly 33

34 Persistenz / Transaktionen Synchronisation mit der Datenbank: EntityTransactions werden also im Persistence Context des EntityManagers (EM) gestartet und beendet. Erst beim Ende der EntityTransaction wird auch in der Datenbank eine Transaktion gestartet! Nach dem erfolgreichen Ende einer Transaktion verbleiben die Entities im Persistence Context als vom EM verwaltete Entities. Dort kann ihr Zustand über die refresh()-methode des EM aus der Datenbank aktualisiert werden. Das refresh() eines Entities wird immer dann notwendig, wenn zu vermuten ist, dass von einem anderen Client mit einem anderen EM das Objekt in der Datenbank (also der Datensatz) zwischenzeitlich geändert wurde!! Prof. Dr. Günter Brackly 34

35 Persistenz / Transaktionen Synchronisation mit der Datenbank: Wird eine Transaktion erfolglos beendet (rollback), verlieren alle zugehörigen Entites ihren Status als vom EM verwaltete Entities und damit ihren Zusammenhang zur Datenbank! Es sind sogenannte detached Entities! Detached Entities können wieder in die Verwaltung (den Persistence Context) des EM aufgenommen werden durch die merge()-methode des EM. Dann können sie auch wieder mit der Datenbank synchronisiert werden (refresh() ) : etx.begin(); person = em.merge(person); em.refresh(person); etx.commit(); Prof. Dr. Günter Brackly 35

36 Persistenz / Transaktionen Synchronisation mit der Datenbank: der Persistence Context eines EntityManagers (EM) wird mit dem Schließen des EM gelöscht. Ein Application managed EM kann in seinem Persistence Context beliebig viele Transaktionen (hintereinander) verarbeiten. Ein solcher Persistence Context kann geleert werden durch die clear()-methode des EM. Dies kann notwendig werden, da im Laufe des Bestehens des Persistence Context immer mehr verwaltete Entities durch erfolgreiche Transaktionen hineinkommen, die aber irgendwann nicht mehr gebraucht werden! Prof. Dr. Günter Brackly 36

37 Persistenz Synchronisation mit der Datenbank: Es kann über die Annotation der Entity-Klassen das gesamte Datenbankdesign von JPA erzeugt werden! Dies muss explizit aufgerufen werden durch neue properties in der persistence.xml Datei: <property name="toplink.ddl-generation" value="create-tables"/> <property name="eclipselink.ddl-generation" value="create-tables"/> Mit dieser Angabe werden alle Tabellen, Sequences, PK- und FK-Constraints, etc. in der Datenbank erzeugt. Für die Generation gibt es noch andere values: z. B. drop-and-create, mit der Konsequenz, dass bestehende Tabellen gelöscht und neu erzeugt werden! Man kann sich auch nur die SQL-Skripts erzeugen lassen, oder beides. Weitere nützliche Hinweise findet man unter: Prof. Dr. Günter Brackly 37

38 Eclipse Zur Entwicklung von Anwendungsprogrammen mit JPA unter Eclipse ist folgendes zu beachten: Das Projekt muss mit einer JRE größer gleich 1.5 arbeiten und als JPA- Projekt erzeugt worden sein; Das Projekt muss im JavaBuildPath die externen JARs toplink-essentials.jar bzw. eclipselink.jar toplink-essentials-agent.jar und die Datenbank-JDBC-jars angegeben haben; javax.persistence_ jar Um das JPA zu benutzen, muss in den Klassen das Package javax.persistence.* importiert werden; Das Projekt muss im JPA-Ordner die Datei persistence.xml haben; Prof. Dr. Günter Brackly 38

39 Datenbank JPA-Anwendung Person Adresse Hobbies Ausbildungen ojdbc4.jar JDBC- Treiber persistence.xml Persistence- Unit Anwendungsprogramm EntityManager EntityManager Factory Beruf Datenbank-Entity-Klassen DBPersonen DBAdressen DBAusbildungen DBHobbies DBBeruf Prof. Dr. Günter Brackly 39

40 Ergebnis und Fazit: OR-Mapping mit JPA und Eclipselink vereinfacht die Anwendungsprogrammierung von Datenbankanwendungen enorm! Nach der Deklaration einer Persistence-Unit und der Annotation der Datenbankklassen können Anwendungsobjekte ohne insert-, update- oder delete-statements in der Datenbank gespeichert bzw. verändert bzw. gelöscht werden! Mit der find() Methode des EntityManagers können Objekte, identifiziert über den PK, aus der Datenbank selektiert werden. Komplexere Abfragen müssen allerdings weiterhin über select-statements bzw. JPQL explizit formuliert werden! POJO Persistence: Objekte können durch Annotation persistent werden, ohne die Objekte selbst zu ändern. Prof. Dr. Günter Brackly 40

41 Ergebnis und Fazit: Queries der JPQL beziehen sich auf Klassen und Attribute, nicht auf das zugrunde liegende Datenbankschema, d.h. der Programmierer braucht eigentlich keine Kenntnis dieses Schemas! Über die Persistence-Units können effizient und flexibel alle marktüblichen Datenbanksysteme angebunden werden. Das betrifft dann natürlich auch die Migration von einem DB-System zu einem anderen. Der Implementierungsaufwand für Projekte reduziert sich, da durch die Annotation alle Tabellen und andere Datenbankobjekte automatisch erzeugt werden. Hat man Sequences annotiert und die zugehörige Werte-Erzeugung für die PKs, müssen alle Trigger, die bisher für den automatischen Aufruf der Sequences verantwortlich waren, deaktiviert werden! (alter trigger <name> disable; ). Prof. Dr. Günter Brackly 41

42 Ergebnis und Fazit: Was man nicht machen sollte, ist die Erzeugung neuer zusätzlicher Tabellen über JPA! Diese neuen Tabellen werden zwar korrekt erzeugt, aber es werden keine neuen FK-Attribute oder FK-Constraints in bestehenden Tabellen erzeugt und zu dieser neuen Tabelle aufgebaut, auch wenn entsprechende bidirektionale Beziehungen annotiert sind!! Annotiert man Entity-Klassen mit bereits bestehenden Tabellen, müssen im Datenbankdesign alle FK-Attribute und die zugehörigen PK- und FK-Constraints deklariert sein, damit kaskadierendes Speichern und Löschen möglich ist! Prof. Dr. Günter Brackly 42

43 Insert-Methode mit JDBC und Oracle (Teil 1): public static int insertperson(connection con, DBPersonen pers) { String stmt = "insert into person(name, vorname, gebdat, geschlecht, einnahmen, bonus) values (?,?,?,?,?,?)"; try { PreparedStatement ps = con.preparestatement(stmt); ps.setstring(1,pers.getname()); ps.setstring(2,pers.getvorname()); ps.setdate(3,pers.getgebdat()); ps.setstring(4,pers.getgeschlecht()); ps.setfloat(5,pers.geteinnahmen()); ps.setstring(6,pers.getbonus()); ps.executeupdate(); ps.close(); String stmt1 = "insert into adresse(plz, ort, str, typ, persnr) values (?,?,?,?, persnr_seq.currval)"; PreparedStatement ps1 = con.preparestatement(stmt1); ps1.setstring(1,((dbadresse) pers.getadressen().get(0)).getplz()); ps1.setstring(2,((dbadresse) pers.getadressen().get(0)).getort()); ps1.setstring(3,((dbadresse) pers.getadressen().get(0)).getstr()); ps1.setstring(4,((dbadresse) pers.getadressen().get(0)).gettyp()); ps1.executeupdate(); ps1.close(); String stmt2 = "insert into hobbies(hobby, persnr) values (?, persnr_seq.currval)"; PreparedStatement ps2 = con.preparestatement(stmt2); ps2.setstring(1,((dbhobbies) pers.gethobbies().get(0)).gethobby()); ps2.executeupdate(); ps2.close(); Prof. Dr. Günter Brackly 43

44 Insert-Methode mit JDBC und Oracle (Teil 2): String stmt3 = "insert into ausbildungen(von, bis, beschreibung, abschluss, datum, persnr) values (?,?,?,?,?, persnr_seq.currval)"; PreparedStatement ps3 = con.preparestatement(stmt3); ps3.setdate(1,((dbausbildungen) pers.getausbildungen().get(0)).getvon()); ps3.setdate(2,((dbausbildungen) pers.getausbildungen().get(0)).getbis()); ps3.setstring(3,((dbausbildungen) pers.getausbildungen().get(0)).getbeschreibung()); ps3.setstring(4,((dbausbildungen) pers.getausbildungen().get(0)).getabschluss()); ps3.setdate(5,((dbausbildungen) pers.getausbildungen().get(0)).getdatum()); ps3.executeupdate(); ps3.close(); String stmt4 = "insert into beruf(begonnen, beendet, beschreibung, gehalt, persnr) values (?,?,?,?, persnr_seq.currval)"; PreparedStatement ps4 = con.preparestatement(stmt4); ps4.setdate(1,((dbberuf) pers.getberufsphasen().get(0)).getbegonnen()); ps4.setdate(2,((dbberuf) pers.getberufsphasen().get(0)).getbeendet()); ps4.setstring(3,((dbberuf) pers.getberufsphasen().get(0)).getbeschreibung()); ps4.setfloat(4,((dbberuf) pers.getberufsphasen().get(0)).getgehalt()); ps4.executeupdate(); ps4.close(); PreparedStatement ps5 = con.preparestatement("select persnr_seq.currval from dual"); ResultSet rs = ps5.executequery(); rs.next(); int persnr = rs.getint(1); rs.close(); con.commit(); return persnr; } catch(exception e) { System.out.println(e); return -1; } } Prof. Dr. Günter Brackly 44

45 Insert-Methode mit JPA und Oracle: public static int insertperson(entitymanager em, DBPersonen pers) { try { EntityTransaction tx = em.gettransaction(); tx.begin(); em.persist(pers); tx.commit(); return pers.getpersnr(); } catch(exception e) { System.out.println(e); tx.rollback(); return -1; } } Prof. Dr. Günter Brackly 45

46 JPQL: JPQL select Statement ist analog zu SQL aufgebaut mit den gleichen Klauseln: select Klausel from Klausel where Klausel group by Klausel having Klausel order by - Klausel Wichtigster Unterschied: Die Queries beziehen sich auf Entities, nicht auf Datensätze, d.h. JPQL Statements werden für Applikationsobjekte formuliert und vom EntityManager bzw. JPA-Provider in SQL-Statements für die Datenbank umgesetzt! Auch hier ist es also so, dass der Anwendungsprogrammierer keine Kenntnis vom Datenbankdesign haben muss! Prof. Dr. Günter Brackly 46

47 JPQL: Beispiel 1: String query = " select p from DBPersonen p join p.adressen a where a.ort = 'Zweibrücken' "; EntityTransaction tx = em.gettransaction(); tx.begin(); Query q = em.createquery(query); List erg = q.getresultlist(); tx.commit(); Die Ergebnisliste erg enthält Entities vom Typ DBPersonen, die im Programm weiter verwendet werden können. Prof. Dr. Günter Brackly 47

48 JPQL: Beispiel 2: String query = " select p.name, p.vorname, a.ort from DBPersonen p join p.adressen a where a.typ = 'P' "; EntityTransaction tx = em.gettransaction(); tx.begin(); Query q = em.createquery(query); List erg = q.getresultlist(); tx.commit(); for ( Iterator i = erg.iterator(); i.hasnext(); ) { Object[] werte = (Object[]) i.next(); System.out.println(werte[0]+" "+werte[1]+" "+werte[2]); } Die Ergebnisliste erg enthält jetzt pro Datensatz ein Array von Attribut- Werten Prof. Dr. Günter Brackly 48

49 JPQL: In JPQL sind fast alle Standard SQL Operatoren und Ausdrücke erlaubt: Select-Klausel: Als Ausdrücke erlaubt sind: - Objekte: select p from DBPersonen p; - Objektattributwerte: select p.name from DBPersonen p; - Referenzobjekte: select p.adressen.get(0) from DBPersonen p; - Objekt-Arrays: select p.persnr, p.name from DBPersonen p; Eine Besonderheit der Select-Klausel ist die Verwendung von Konstruktor- Ausdrücken zur Erzeugung (Zusammenstellung) neuer Objekte, quasi als View: select NEW frauen.dbpersonen(p.persnr, p.name, p.gebdat) from DBPersonen p where p.geschlecht = 'W'; Ergebnis sind neue Instanzen vom Typ frauen.dbpersonen, vorausgesetzt, dass ein entsprechender Konstruktor in DBPersonen existiert! Diese können dann im Programm über den vollen Typnamen zugegriffen werden. Prof. Dr. Günter Brackly 49

50 JPQL: From-Klausel: Zulässig sind alle mengenwertigen Konstrukte, kombiniert über INNER, LEFT OUTER, RIGHT OUTER oder FULL OUTER JOINs: - select a.ort from DBPersonen p JOIN p.adressen a; - select p.name from DBPersonen p JOIN p.adressen a JOIN p.ausbildungen au where au.abschluss = 'Abitur' and a.plz = '66482'; - select a.ort from DBPersonen p, DBAdresse a where p = a.person; - select p, ba from DBPersonen p LEFT OUTER JOIN p.bank ba; Voraussetzung ist hier eine 1:1 Beziehung zwischen DBPersonen und DBBank; Hat eine Person noch keine Bank eingetragen, ist das BankObjekt NULL. Prof. Dr. Günter Brackly 50

51 JPQL: Where-Klausel: - Zulässig sind alle bedingten Ausdrücke, verbunden durch Boolesche Operatoren AND, OR, NOT; - Es können die aus SQL bekannten Operatoren verwendet werden: BETWEEN LIKE IN EXISTS - Es können beliebig Subqueries gebildet werden. - Bzgl. Collections gibt es den speziellen Operator IS [NOT] EMPTY - Es gibt build-in Funktionen wie abs(number), current_date, etc Prof. Dr. Günter Brackly 51

52 JPQL: Where-Klausel: - Beispiele: select p from DBPersonen p where p.gebdat BETWEEN ' ' AND ' ' select p from DBPersonen p where p.name LIKE 'M er%' select p from DBPersonen p where p.hobbies IS EMPTY; select p from DBPersonen p where p.gebdat = (select max(pers.gebdat) from DBPersonen pers) select p from DBPersonen p where NOT EXISTS (select au from p.ausbildungen au where au.abschluss = 'Abitur') Prof. Dr. Günter Brackly 52

53 JPQL: Group by- und Having-Klausel: Wie im Standard SQL gibt es in JPQL die 5 Aggregatfunktionen: max(), min(), avg(), sum(), count() bzgl. derer gruppiert werden kann. - Beispiele: select count(a) from DBPersonen p join p.adresssen a select p.name, count(a), max(b.gehalt) from DBPersonen p join p.adresssen a join p.berufsphasen b GROUP BY p.name select p.name, count(a) from DBPersonen p join p.adresssen a GROUP BY p.name HAVING count(a) > 2 Prof. Dr. Günter Brackly 53

54 JPQL: Order by Klausel: Wie im Standard SQL können Abfrageergebnisse sortiert werden, absteigend (DESC) oder aufsteigend (ASC) - Beispiel: select p.persnr, p.name, p.vorname, p.gschlecht from DBPersonen p order by p.geschlecht, p.name DESC Unterschied zum Standard SQL: Es kann nur nach den Attributen sortiert werden, die in der select-klausel angegeben sind! Prof. Dr. Günter Brackly 54

55 JPQL: Update Statement : Wie im Standard SQL können bestehende Entities aktualisiert werden: update DBPersonen p set p.gebdat = ' ', p.geschlecht = 'M' where p.persnr = 7; Das Update-Statement wird direkt in ein SQL-Statement umgesetzt und an die Datenbank geschickt, ohne die betroffenen Datensätze zunächst als Entities in der Applikation zu instanziieren! Das ist notwendig, falls massenhaft Datensätze aktualisiert werden sollen! Prof. Dr. Günter Brackly 55

56 JPQL: Delete - Statement: Wie im Standard SQL können bestehende Entities gelöscht werden: delete from DBBeruf b where b.person is null Unterschied zwischen em.remove() und (JPQL) delete: Mit em.remove() können nur Objekte gelöscht werden, die sich im Persistence Context des EntityManagers befinden, also in der Applikation als Entities instanziiert sind!! Auch das delete-statement wird direkt in ein SQL-Statement umgesetzt und an die Datenbank geschickt, ohne die betroffenen Datensätze zunächst als Entities in der Applikation zu instanziieren! Prof. Dr. Günter Brackly 56

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Version: 2014 Orientation 1.0 in Objects GmbH Der Sprecher Erik Bamberg (OIO) 2 1 s Aufgaben des Cachings Datenbank

Mehr

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate Hibernate Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen Nabil janah 1 Hibernate Inhalt Hibernate allgemeines Vorteile von Hibernate Hibernate-Architektur

Mehr

Datenzugriffskomponenten mit JPA

Datenzugriffskomponenten mit JPA Datenzugriffskomponenten mit JPA FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Theis Michael - Senior Developer UniCredit Global Information Services S.C.p.A Sommersemester 2012

Mehr

Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0

Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0 Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0 Alle Unterlagen und Übungen sind in folgenden Google Code Project abgelegt und frei zugänglich: https://code.google.com/p/jpaworkshop/ Aktualisierung

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

Open-Source Transparente Persistence (keine Interfaces, keine Ober- Klassen) Caching

Open-Source Transparente Persistence (keine Interfaces, keine Ober- Klassen) Caching 1 Was ist Hibernate Hibernate ist ein Open-Source-Java-Persistenz-Framework für relationale Datenbanken Persistenz-Frameworks: kapseln und abstrahiert den Zugriff auf eine Speicherschicht -> Zwischenschicht

Mehr

Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können!

Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können! Datenbanken: Standard CLI und JDBC Anwendungsentwicklung für relationale Datenbanken setzt voraus, dass prozedurale Abläufe programmiert werden können! (Endanwendern ist nicht zuzumuten, SQL zu lernen

Mehr

Kein blasses Schema? NoSQL und Big Data mit Hibernate OGM

Kein blasses Schema? NoSQL und Big Data mit Hibernate OGM Kein blasses Schema? NoSQL und Big Data mit Hibernate OGM Thomas Much thomas@muchsoft.com www.muchsoft.com 1 NoSQL und Big Data Herzlich Willkommen in der NoSQL-Welt OnlySQL Not 2 NoSQL und Big Data NoSQL

Mehr

Kapitel 3: Datenbanksysteme

Kapitel 3: Datenbanksysteme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2015 Kapitel 3: Datenbanksysteme Vorlesung:

Mehr

Unterabfragen (Subqueries)

Unterabfragen (Subqueries) Unterabfragen (Subqueries) Die kürzeste Formulierung ist folgende: SELECT Felderliste FROM Tabelle1 WHERE Tabelle1.Feldname Operator (SELECT Feldname FROM Tabelle2 WHERE Bedingung); wobei Tabelle1 und

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

Java Forum Stuttgart 2013 Kai.Spichale@adesso.de twitter.com/kspichale spichale.blogspot.de

Java Forum Stuttgart 2013 Kai.Spichale@adesso.de twitter.com/kspichale spichale.blogspot.de NoSQL für Java-Entwickler Java Forum Stuttgart 2013 Kai.Spichale@adesso.de twitter.com/kspichale spichale.blogspot.de 23.06.2013 Agenda Datengröße Key-value Stores 1. Wide Column 2. Cassandra Document

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Behandelt Java EE 6. O Reillys Taschenbibliothek. Java EE. kurz & gut. Arun Gupta O REILLY. Übersetzung von Thomas Demmig

Behandelt Java EE 6. O Reillys Taschenbibliothek. Java EE. kurz & gut. Arun Gupta O REILLY. Übersetzung von Thomas Demmig O Reillys Taschenbibliothek Behandelt Java EE 6 Java EE kurz & gut O REILLY Arun Gupta Übersetzung von Thomas Demmig Inhalt Vorwort... 1 Java Platform, Enterprise Edition... 1 Einführung... 1 Deliverables...

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language: SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In

Mehr

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,

Mehr

Objektorientierte Datenbanken

Objektorientierte Datenbanken OODB 11 Slide 1 Objektorientierte Datenbanken Vorlesung 11 Sebastian Iwanowski FH Wedel OODB 11 Slide 2 Wesentliche Eigenschaften von Hibernate Transparente Persistenz Transitive Persistenz (Persistenz

Mehr

7 Datenbankabfragen. 7.1 Die Hibernate Query Language

7 Datenbankabfragen. 7.1 Die Hibernate Query Language 149 Dieses Kapitel widmet sich dem effektiven Zugriff auf Daten. Mit Datenbankabfragen können Objekte mit bestimmten Eigenschaften gesucht werden. Erst mit Abfragen ist es möglich, Objekte zu laden, deren

Mehr

SQL. Abfragesprache Datenmanipulation - DML

SQL. Abfragesprache Datenmanipulation - DML SQL Abfragesprache Datenmanipulation - DML SQL DML-Operationen DML = Data Manipulation Language Sprache zur Veränderung der Daten Operationen Daten selektieren Daten einfügen Daten ändern Daten löschen

Mehr

Datenbankprogrammierung 2

Datenbankprogrammierung 2 Datenbankprogrammierung 2 JDBC Java Database Connectivity Call Level Interface Schnittstelle zwischen DBMS und Applikation JDBC API ist seit JDK1.1 inkludiert Ermöglicht Zugriff aus Java-Applikationen

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2 SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R IV-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Java und Datenbanksysteme Datenbankanbindung mit JDBC Java und Datenbanksysteme Datenbankanbindung mit JDBC 30.05.2001 Stefan Niederhauser sn@atelier-w.ch 1-Einführung Datenbanksysteme Java und Datenbanken: JDBC Geschichte der JDBC-Versionen Vergleich von

Mehr

Thema: Datenzugriffskomponenten mit JPA 2.0

Thema: Datenzugriffskomponenten mit JPA 2.0 Thema: Studienarbeit im Fach: Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Vorgelegt von: Johannes Ulmer Vorgelegt am: 18.05.2011 Matrikelnummer: 06295209 Dozent: Michael Theis Inhaltsverzeichnis

Mehr

Hibernate. Objekt/Relationales Mapping für Java

Hibernate. Objekt/Relationales Mapping für Java Hibernate Objekt/Relationales Mapping für Java Wer bin ich? Stefan Wille Softwareentwickler / Architekt seit 1996 Freelancer seit 2000 Autor von Goto JavaServer Pages in 2001 Wesentliche Themen Was ist

Mehr

Objekt-relationales Mapping und Performance-Tuning

Objekt-relationales Mapping und Performance-Tuning Objekt-relationales Mapping und Performance-Tuning Thomas Krüger tkrueger@vanatec.com Agenda Wege um Daten zu lesen Wege um Daten zu modellieren Wege um Datenbanken effizient zu nutzen 2 2 Wege, Daten

Mehr

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Übung, Sommersemester 2013 29. April 2013 - MySQL 2 Sebastian Cuy sebastian.cuy@uni-koeln.de Aufgaben Anmerkungen Best practice: SQL Befehle

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

IV. Datenbankmanagement

IV. Datenbankmanagement Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.

Mehr

Fachbereich Informatik Praktikum 1

Fachbereich Informatik Praktikum 1 Hochschule Darmstadt DATA WAREHOUSE SS2015 Fachbereich Informatik Praktikum 1 Prof. Dr. S. Karczewski Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 14.April.2015 1. Kurzbeschreibung In diesem Praktikum geht

Mehr

Bernd Müller. Java Forum Stuttgart, 4.7.2013

Bernd Müller. Java Forum Stuttgart, 4.7.2013 Hasta la vista Mandantenfähigkeit? Bernd Müller Fakultät Informatik Ostfalia Hochschule Braunschweig/Wolfenbüttel Java Forum Stuttgart, 4.7.2013 Bernd Müller, JFS 2013, Ostfalia, 4.7.2013 1/61 Referent

Mehr

7.5.3. CREATE TABLE-Syntax

7.5.3. CREATE TABLE-Syntax 7.5.3. CREATE TABLE-Syntax 7.5.3.1. Stille Spaltentyp-Änderungen CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tabelle [(create_definition,...)] [tabellen_optionen] [select_statement] create_definition: spalten_name

Mehr

Datenbanken: ER-Modell

Datenbanken: ER-Modell Beispiel: Lastenheft: Für eine Hochschule soll eine Verwaltungssoftware geschrieben werden, die alle relevanten Daten in einem relationalen Datenbanksystem speichert. Zu diesen Daten zählen die Stamm-

Mehr

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung Technische Universität München WS 2003/04, Fakultät für Informatik Datenbanksysteme I Prof. R. Bayer, Ph.D. Lösungsblatt 8 Dipl.-Inform. Michael Bauer Dr. Gabi Höfling 12.01. 2004 Integritätsbedingungen

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

Transaktionen in der Praxis. Dr. Karsten Tolle Transaktionen in der Praxis Dr. Karsten Tolle Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch (Exception e) { e.printstacktrace(); } con.setautocommit(false);

Mehr

LINQ. LANGUAGE INTEGREATED QUERY.net 3.5. Bernhard Grojer BernhardG@ppedv.de

LINQ. LANGUAGE INTEGREATED QUERY.net 3.5. Bernhard Grojer BernhardG@ppedv.de LINQ LANGUAGE INTEGREATED QUERY.net 3.5 Bernhard Grojer BernhardG@ppedv.de Agenda Übersicht LINQ Basistechnologien Verschiedene Arten von LINQ LINQ (to Objects) LINQ TO SQL Übersicht LINQ Aggregationen

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

Umsetzung einer auf Java EE 6 basierenden generischen Persistenzumgebung

Umsetzung einer auf Java EE 6 basierenden generischen Persistenzumgebung MASTER THESIS zur Erlangung des akademischen Grades Master of Science in Engineering im Studiengang Multimedia und Softwareentwicklung Umsetzung einer auf Java EE 6 basierenden generischen Persistenzumgebung

Mehr

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

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen Programmieren von Datenbankzugriffen mit JDBC Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015 Überblick über das Package java.sql Übersicht Architektur von JDBC Grundstruktur eines

Mehr

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname

Mehr

SQL-Anweisungen. SELECT (SQL Data Query Language)

SQL-Anweisungen. SELECT (SQL Data Query Language) SQL-Anweisungen SELECT (SQL Data Query Language) SELECT * SELECT * FROM "meine Tabelle"; SELECT feldname1, feldname2 SELECT feldname1, feldname2 FROM meinetabelle ORDER BY feldname2, feldname1 DESC; WHERE

Mehr

PostgreSQL im praktischen Einsatz. Stefan Schumacher

PostgreSQL im praktischen Einsatz. Stefan Schumacher PostgreSQL im praktischen Einsatz 2. Brandenburger Linux Infotag 2005 Stefan Schumacher , PGP Key http:/// $Header: /home/daten/cvs/postgresql/folien.tex,v 1.11 2005/04/25

Mehr

Leseprobe. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN: 978-3-446-42693-1

Leseprobe. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN: 978-3-446-42693-1 Leseprobe Bernd Müller, Harald Wehr Java Persistence API 2 Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN: 978-3-446-42693-1 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42693-1

Mehr

4. Java Persistence API (JPA)

4. Java Persistence API (JPA) 4. Java Persistence API (JPA) Problem: OO in relationale DB Idee des Persistence Mapper Einfache Entity-Klasse Lebenslauf eines Entity-Objekts Umsetzung von 1:N- und M:N-Relationen Geordnete Daten Anfragen

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

Datenbanken: SQL. SQL: Structured Query Language. Anfragesprache für relationale Datenbanksysteme

Datenbanken: SQL. SQL: Structured Query Language. Anfragesprache für relationale Datenbanksysteme SQL: Structured Query Language Anfragesprache für relationale Datenbanksysteme Zur Erinnerung: Relationale Datenbanksysteme speichern die Daten in Tabellen (Relationen): Zeilen: einzelne Objekte der Realität

Mehr

Datenbankanwendungen (JDBC)

Datenbankanwendungen (JDBC) Datenbankanwendungen (JDBC) Hierarchie: Connection Transaction Statement Connection Aufbau (klassisch): Registrierung des JDBC Driver beim DriverManager: Class.forName(JDBC Driver); Eigentlicher Verbindungsaufbau

Mehr

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

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren DB-Programmierung Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele static SQL verstehen Build-Prozess / Art des Datenzugriffs Host-Variablen Vor- / Nachteile dynamic SQL verstehen

Mehr

Android Java Specifics / Basic IO

Android Java Specifics / Basic IO Dalvik virtual machine Registermaschine anstelle einer Stackmaschine Optimiert für geringen Speicherverbrauch Umwandlung von.class Dateien in.dex-format mit Hilfe von dx Jedes Programm läuft als eigener

Mehr

Datenadminstrator, Datenbankdesigner, Systemanalytiker (für die logische Sicht zuständig)

Datenadminstrator, Datenbankdesigner, Systemanalytiker (für die logische Sicht zuständig) 1 Grundlagen Begriffe Daten bekannte zutreffende Tatsachen über die Domäne/Miniwelt DBS Einsatz eines DBMS für eine Datenbank, DBS besteht aus folgenden Komponenten: 1. DBMS 2. Datenbank DBMS Software

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Kapitel DB:VI (Fortsetzung)

Kapitel DB:VI (Fortsetzung) Kapitel DB:VI (Fortsetzung) VI. Die relationale Datenbanksprache SQL Einführung SQL als Datenanfragesprache SQL als Datendefinitionssprache SQL als Datenmanipulationssprache Sichten SQL vom Programm aus

Mehr

Java und Datenbanken Ein Überblick

Java und Datenbanken Ein Überblick Java und Datenbanken Ein Überblick Benjamin Lietzau & Philipp Meyer Sommersemester 2011 1 Themenüberblick 29.03.11 - Benjamin Lietzau & Philipp Meyer - Java und Datenbanken 2 Themenüberblick 1. Einführung

Mehr

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus:

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus: Einführung in MySQL SQL (Structured Query Language) ist eine Computersprache zum Speichern, Bearbeiten und Abfragen von Daten in relationalen Datenbanken. Eine relationale Datenbank kann man sich als eine

Mehr

Informatik Datenbanken SQL-Einführung

Informatik Datenbanken SQL-Einführung Informatik Datenbanken SQL-Einführung Gierhardt Inhaltsverzeichnis 1 Vorbemerkungen 1 2 Auswahl-Abfragen mit SELECT 2 2.1 Selektion...................................... 2 2.2 Projektion.....................................

Mehr

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine.

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine. Kapitel 2 Datenverwaltung durch SQL Server Wir wollen das obige Skript zwei Mal laufen lassen, einmal mit und einmal ohne eingeschalteten Schreibcache der Festplatte. Für eine lokale Festplatte können

Mehr

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index!

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index! 1/40 PHP-User-Group Stuttgart 14.01.2009 Warum Datenbanken einen Hals bekommen und was sich dagegen tun lässt. Tuning und Performancesteigerung ohne zusätzliche Hardware. Ein. Loblied auf den Tabellen-Index!

Mehr

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Vorlesungsteil SQL Grundlagen - 1 / 8 - SQL SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Auf einem Server (Rechner im Netz, der Dienste

Mehr

Geordnete Form...36 Erfassung und Speicherung...37 Relationale Datenbanken...37 Einfache Tabellen...37 Objekte und Begriffe relationaler

Geordnete Form...36 Erfassung und Speicherung...37 Relationale Datenbanken...37 Einfache Tabellen...37 Objekte und Begriffe relationaler Inhaltsverzeichnis Einleitung...13 SQL: Die Abfragesprache für Datenbanken...17 Kennzeichnende Merkmale von SQL...17 SQL-Dialekte...18 Kurze Entwicklungsgeschichte...18 SQL/86 oder SQL/1...19 SQL/89 oder

Mehr

Datenbanksysteme 2015

Datenbanksysteme 2015 Datenbanksysteme 2015 Kapitel 09: Datenbankapplikationen Oliver Vornberger Institut für Informatik Universität Osnabrück Datenbankapplikationen ODBC MS Visio MS Access Embedded SQL JDBC Application SQLJ

Mehr

StructuredQueryLanguage(SQL)

StructuredQueryLanguage(SQL) StructuredQueryLanguage(SQL) Themen: ErstelenundÄndernvonTabelen AbfragenvonDaten Einfügen,ÄndernundLöschenvonDaten Erstelennutzerde niertersichten(views) 2012Claßen,Kempa,Morcinek 1/23 SQL Historie System

Mehr

JDBC. Allgemeines ODBC. java.sql. Beispiele

JDBC. Allgemeines ODBC. java.sql. Beispiele JDBC Java Data Base Connectivity Programmierschnittstelle für relationale Datenbanken Sammlung von Klassen, welche zum Aufbau einer Verbindung zwischen einem Java-Programm und einer Datenbank dienen Verwendet

Mehr

Hauptschritte einer JDBC-App

Hauptschritte einer JDBC-App JDBC Java DataBase Connectivity Sammlung von Klassen und Interfaces zur Arbeit mit Datenbanken auf Basis von SQL Package java.sql Datenbankmanagementsystem und eine oder mehrere Datenbanken Jdbc Driver,

Mehr

Warum EJB Technologie (1)?

Warum EJB Technologie (1)? Datenbanken und Informationssysteme 2 SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 Folie EJB - 1 Warum EJB Technologie

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr Raum: LF 230 Bearbeitung: 9.-11. Mai 2005 Datum Gruppe Vorbereitung Präsenz Aktuelle Informationen unter: http://www.is.informatik.uni-duisburg.de/courses/dbp_ss03/ Tabellen in IBM DB2 Tabellen Eine relationale

Mehr

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt DBS ::: SERIE 5 Die Relation produkt enthält Hersteller, Modellnummer und Produktgattung (pc, laptop oder drucker aller Produkte. Die Modellnummer ist (der Einfachheit halber eindeutig für alle Hersteller

Mehr

Übung: Data Warehousing und Data Mining

Übung: Data Warehousing und Data Mining Übung: Data Warehousing und Data Mining Sebastian Wandelt 20. Oktober 2011 wandelt@informatik.hu-berlin.de Überblick Organisatorisches Kurze Einführung JDBC PL/SQL 1. Aufgabenblatt Ablauf des Semesters

Mehr

Interaktive Webseiten mit PHP und MySQL

Interaktive Webseiten mit PHP und MySQL Interaktive Webseiten mit PHP und Vorlesung 4: PHP & Sommersemester 2003 Martin Ellermann Heiko Holtkamp Sommersemester 2001 Hier noch ein wenig zu (My)SQL: SHOW INSERT SELECT ORDER BY GROUP BY LIKE /

Mehr

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

Event Stream Processing & Complex Event Processing. Dirk Bade

Event Stream Processing & Complex Event Processing. Dirk Bade Event Stream Processing & Complex Event Processing Dirk Bade Die Folien sind angelehnt an eine Präsentation der Orientation in Objects GmbH, 2009 Motivation Business Activity Monitoring Sammlung, Analyse

Mehr

Performance Tuning mit @enterprise

Performance Tuning mit @enterprise @enterprise Kunden-Forum 2005 Performance Tuning mit @enterprise Herbert Groiss Groiss Informatics GmbH, 2005 Inhalt Datenbank RMI JAVA API HTTP Konfiguration Analyse Groiss Informatics GmbH, 2005 2 Datenbank

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Referenzielle Integrität SQL

Referenzielle Integrität SQL Referenzielle Integrität in SQL aus Referential Integrity Is Important For Databases von Michael Blaha (Modelsoft Consulting Corp) VII-45 Referenzielle Integrität Definition: Referenzielle Integrität bedeutet

Mehr

Tag 5 Inhaltsverzeichnis

Tag 5 Inhaltsverzeichnis Tag 5 Inhaltsverzeichnis ODBC / JDBC: Ziel und Prinzip JDBC Überblick Erstes Beispiel Queries (Execute- und UpdateQuery) Der Typ "ResultSet" Diverses Metadata PreparedStatement Transaktionen und Batches

Mehr

Structured Query Language (SQL) 1

Structured Query Language (SQL) 1 Structured Query Language (SQL) 1 1. Grundlagen und Hilfsmittel Structured Query Language, kurz SQL, wurde in den 70er Jahren bei IBM entwickelt, als eine Arbeitsgruppe die erste relationale Datenbank

Mehr

Begleitskript. zum PHP/MySQL. Kurs

Begleitskript. zum PHP/MySQL. Kurs Begleitskript zum PHP/MySQL Kurs http://www.online-platform.net Dieser Text unterliegt der GNU General Public License. Er darf als ganzes oder in Auszügen kopiert werden, vorausgesetzt, dass sich dieser

Mehr

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java. http://www.trivadis.com/images/javaperf_tcm16-7133.

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java. http://www.trivadis.com/images/javaperf_tcm16-7133. Page 1 of 7 Betrifft: Java oder PL/SQL? Art der Info: Technische Background Info Autor: Guido Schmutz (guido.schmutz@trivadis.com) Quelle: Aus unserer Schulungs- und Beratungstätigkeit Mit Oracle8.1 besteht

Mehr

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012

Isolationsstufen für. Dr. Karsten Tolle Dienstag 31. Januar 2012 Isolationsstufen für Transaktionen / Sicherheit Dr. Karsten Tolle Dienstag 31. Januar 2012 Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch

Mehr

Datenbankzugriff mit JDBC

Datenbankzugriff mit JDBC Java: Kapitel 8 Datenbankzugriff mit JDBC Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Überblick über Kapitel 8 Einführung in SQL und JDBC Verbindung zur Datenbank

Mehr

Objektrelationale, erweiterbare Datenbanken WS 04/05

Objektrelationale, erweiterbare Datenbanken WS 04/05 Eidgenössische Technische Hochschule Zürich Swiss Federal Institute of Technology Zurich Institut für Informationssysteme Dr.C.Türker Objektrelationale, erweiterbare Datenbanken WS 0405 Übung 8 Aufgabe

Mehr

SQL (Structured Query Language) Schemata Datentypen

SQL (Structured Query Language) Schemata Datentypen 2 SQL Sprachelemente Grundlegende Sprachelemente von SQL. 2.1 Übersicht Themen des Kapitels SQL Sprachelemente Themen des Kapitels SQL (Structured Query Language) Schemata Datentypen Im Kapitel SQL Sprachelemente

Mehr

Programmieren II. Relationale Datenbanken. Vorlesung 07. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011.

Programmieren II. Relationale Datenbanken. Vorlesung 07. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011. Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 26 Datenbanken SQL-Grundlagen JDBC SQL-Constraints 2 / 26 Relationale Datenbanken Ein Datenbanksystem ist ein System zur

Mehr

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services 531 27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services Im zweiten Teil dieses Buches haben wir die Eigenschaften der Transact-SQL- Sprache in Bezug auf die Bearbeitung von operativen Daten gezeigt.

Mehr

Relationale Datenbanken in der Praxis

Relationale Datenbanken in der Praxis Seite 1 Relationale Datenbanken in der Praxis Inhaltsverzeichnis 1 Datenbank-Design...2 1.1 Entwurf...2 1.2 Beschreibung der Realität...2 1.3 Enitiy-Relationship-Modell (ERM)...3 1.4 Schlüssel...4 1.5

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Object Relational Mapping Layer

Object Relational Mapping Layer Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP (propel) 1/18 Propel - Persistance Layer OR-Mapper für PHP Portierung

Mehr

Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis

Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis bereit. PRÜFUNG AUS DATENBANKSYSTEME VU 184.686 7. 5. 2014 Kennnr. Matrikelnr.

Mehr

Nathan Burgener. Design by Contract. Modul SWE

Nathan Burgener. Design by Contract. Modul SWE NathanBurgener DesignbyContract ModulSWE NathanBurgener Inhaltsverzeichnis 1 WasistDesignbyContract...3 1.1 Überblick...3 1.2 DesignbyContractmitMethoden...4 1.3 DesignbyContractmitKlassen...5 1.4 Vererbung...6

Mehr

TimeSafe Leistungserfassung

TimeSafe Leistungserfassung Keep your time safe. TimeSafe Leistungserfassung Adressimport 1/8 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 Allgemeines... 3 1.1 Adressen in der TimeSafe Leistungserfassung... 3 1.2 Organisationen und/oder

Mehr

AutomatisiertePersistenz: Persistenz-Frameworks

AutomatisiertePersistenz: Persistenz-Frameworks AutomatisiertePersistenz: Persistenz-Frameworks Was ist Persistenz? Persistenz bedeutet, dass die Objekte die Programmausführung überdauern Praktisch: Objekte werden in einer Datenbank "aufbewahrt" Auch

Mehr

4. Java Persistence API (JPA)

4. Java Persistence API (JPA) 4. Java Persistence API (JPA) Problem: OO in relationale DB Idee des Persistence Mapper Einfache Entity-Klasse Lebenslauf eines Entity-Objekts Umsetzung von 1:N- und M:N-Relationen Geordnete Daten Anfragen

Mehr