Java Persistenz mit JPA und Hibernate. Michael Plöd - Senacor Technologies AG

Größe: px
Ab Seite anzeigen:

Download "Java Persistenz mit JPA und Hibernate. Michael Plöd - Senacor Technologies AG"

Transkript

1 Java Persistenz mit JPA und Hibernate Michael Plöd - Senacor Technologies AG

2 Michael Plöd Partner bei Senacor Technologies AG Hibernate Erfahrung seit 2002

3 Ihr Hintergrund Erfahrung mit Java? Erfahrung mit Java Persistenz? Tägliche Projektarbeit? Einsatz von Hibernate im Projekt? Ihre Erwartungen an die Schulung?

4 Agenda Zeit Thema 08:00-09:00 Einleitung und theoretische Grundlagen 09:00-09:30 Hibernate im Überblick 09:45-10:30 Mapping von Klassen 10:30-11:15 Arbeiten mit Hibernate 11:15-11:45 Queries

5 Datenbank Java Anwendung <<TABLE>> FOTOS ID <PK> NAME... Foto <<TABLE>> FOTOS_IN_GALERIEN PIC_ID <PK><FK> GAL_ID <PK><FK> Object-Relational Impedance Mismatch 0..* 0..* Galerie <<TABLE>> GALERIEN ID <PK> TITEL...

6 Impedance Mismatch Identität Granularität Vererbung Datenbank Primärschlüssel Erstellung eigener Datentypen sehr proprietär Vererbung nur durch Datenmodell OO-Software Objekt-Identität Objekt-Gleichheit Identity vs Equality Eigene Typen können jederzeit erstellt werden Vererbung ist Bestandteil von OO-Software Navigation Assoziationen Navigation in jeder Richtung ohne Einschränkbarkeit möglich Navigation über Joins Join-Tabellen bei n:m Navigation wird explizit deklariert Gerichtete Navigation somit möglich To-One Relationen (Pointer) To-Many Relationen (Collections)

7 Java Persistenz Feature-Set Hibernate JDBC ist Java SE Standard JPA 2.0 ibatis und Spring JDBC Template sind JDBC Frameworks JPA 1.0 ibatis JPA 1, JPA 2 und Hibernate sind OR- Mapper JDBC-Template JDBC Code Menge / Komplexität

8 JDBC ist doch einfach

9 Einfacher Select mit JDBC List<User> users = new ArrayList<User>(); Class.forName( org.postgresql.driver ); Connection con = DriverManager.getConnection(url, username, password); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery( SELECT * FROM USERS ); while(rs.hasnext()) { User u = new User(); u.setname(rs.getstring(1)); users.add(u); } rs.close(); stmt.close(); con.close();

10 ! Exception Handling fehlt

11 Einfacher Select mit JDBC try { List<User> users = new ArrayList<User>(); Class.forName( org.postgresql.driver ); Connection con = DriverManager.getConnection(url, username, password); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery( SELECT * FROM USERS ); while(rs.hasnext()) { User u = new User(); u.setname(rs.getstring(1)); users.add(u); } rs.close(); stmt.close(); con.close(); } catch (SQLException e) { //Exception Handling }

12 Resource Leaks

13 Einfacher Select mit JDBC Connection con = null; Statement stmt = null; ResultSet rs = null; try { List<User> users = new ArrayList<User>(); Class.forName( org.postgresql.driver ); con = DriverManager.getConnection(url, username, password); stmt = con.createstatement(); rs = stmt.executequery( SELECT * FROM USERS ); while(rs.hasnext()) { User u = new User(); u.setname(rs.getstring(1)); users.add(u); } rs.close(); stmt.close(); con.close(); } catch (SQLException e) { //Exception Handling } finally { if(rs!= null) { try {rs.close();} catch (SQLException e) {...}; } if(stmt!= null) { try {stmt.close();} catch (SQLException e) {...}; } if(con!= null) { try {con.close();} catch (SQLException e) {...}; } }

14 JDBC Frameworks Eigenschaften Pro Contra Beispiele Adressieren Komplexität von JDBC Bieten wiederverwendbare Komponenten Einfache Typ Mappings (z.b. RowMapper) Einfach zu benutzen Wenige Fallstricke Auch für extrem komplexe Legacy Datenbanken geeignet Begrenztes Caching Beschränkte Typ Mappings Zahlreiche manuelle Aufrufe Spring JDBCTemplate ibatis

15 OR-Mapper Eigenschaften Pro Contra Adressieren Komplexität von JDBC Komplette Typ Mappings Ausgefeiltes Caching System Transaktionales Write-Behind Einfach zu benutzen Caching Code-Menge Manchmal komplex Schwächen bei schlecht entworfenen Legacy Datenbanken Beispiele Hibernate EclipseLink Open JPA

16 Aufbau eines OR- Mappers Configuration Factory 2nd Level Cache Persistence Context 1st Level Cache

17 Abbildung auf Datenbank Person Adresse Konto public class Person { private Adresse adresse; private Set<Konto> konten; } //... getter und setter XML Mapping Annotationen PERSONEN KONTEN

18 Aufbau von JPA Persistence EntityManager Factory 2nd Level Cache EntityManager 1st Level Cache

19 Aufbau von Hibernate Configuration SessionFactory 2nd Level Cache Session 1st Level Cache

20 Hibernate s Module ORM EntityManager Shards Search OGM Bean Validation Kern von Hibernate OR-Mapping Engine XML- und Annotation-Mappings JPA Implementierung auf Basis von Core und Annotations Unterstützung für verteilte Datenbestände Von Google Mächtige Volltext-Suche Basiert auf Lucene Hibernate für NoSQL Stores DDL Generierung Validierung DDL Generierung

21 Transaktionales Write-Behind begin commit Transaktion Session open saves: 1 saves: 1 updates: 1 close session.save(person) Logik session.update(konto) INSERT UPDATE DATENBANK

22 Agenda Zeit Thema 08:00-09:00 Einleitung und theoretische Grundlagen 09:00-09:30 JPA im Überblick 09:45-10:30 Mapping von Klassen 10:30-11:15 Arbeiten mit Hibernate 11:15-11:45 Queries

23 JPA im Überblick

24 Aufbau von JPA Persistence EntityManager Factory 2nd Level Cache EntityManager 1st Level Cache

25 Einfaches public class Person private long id; private String vorname; private String nachname; private long getid() { return id; } private void setid(long id) { this.id = id; } Person ID NUMBER <PK> VORNAME VARCHAR NACHNAME VARCHAR //... weitere getter und setter } //... equals und hashcode

26 Konfiguration META-INF/persistence.xml <persistence xmlns=" xmlns:xsi=" xsi:schemalocation=" version="2.0"> <persistence-unit name="test"> <class>com.senacor.schulung.hibernate.domain.person</class> <properties> <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcdriver" /> <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:hsql://localhost/testdb" /> <property name="javax.persistence.jdbc.user" value="sa" /> <property name="javax.persistence.jdbc.password" value="" /> <property name="hibernate.dialect" value="org.hibernate.dialect.hsqldialect"/> </properties> </persistence-unit> </persistence>

27 Initialisierung EntityManagerFactory Aus persistence.xml wird einmalig EntityManagerFactory erstellt EntityManagerFactory entitymanagerfactory = Persistence.createEntityManagerFactory( "test" );

28 Arbeiten mit JPA 1. EntityManager erstellen 2. Transaktion starten 3. Operationen durchführen 4. Transaktion committen 5. EntityManager schließen EntityManager e = emf.createentitymanager() User u = new User(); u.setname("testuser"); e.gettransaction().begin(); e.persist(u); e.gettransaction().commit(); e.close();

29 Agenda Zeit Thema 08:00-09:00 Einleitung und theoretische Grundlagen 09:00-09:30 JPA im Überblick 09:45-10:30 Mapping von Klassen 10:30-11:15 Arbeiten mit Hibernate 11:15-11:45 Queries

30 Einfache Mappings Domänenmodellierung Entitäten Attribute Primärschlüssel Value Objects Assoziationen

31 Identifikation von Entitäten und Value Objects Ein gutes Domänenmodell unterscheidet zwischen Entitäten und Value Objects Des Weiteren ist die Navigation im Modell klar gegliedert und folgt einheitlichen Richtlinien Fokus des Modells sollte primär Fachlichkeit sein

32 Entitäten konstante Identität eigenen besitzen eine und einen Lebenszyklus

33 Identität durch Attribute bestimmt Kein eigener Lebenszyklus Value Objects

34 Buchtip: Domain Driven Design von Eric Evans Addison Wesley Verlag ISBN:

35 Mapping von Entitäten Eine Entität muss gemappt werden Eine Entität muss einen annotierten Primärschlüssel haben Eine Entität muss einen No-Arg Constructor haben

36 Beispiel PERSONEN ) public class Person private long id; private String vorname; private String nachname; private long getid() { return id; } private void setid(long id) { this.id = id; } PERSONEN ID NUMBER <PK> VORNAME VARCHAR NACHNAME VARCHAR //... weitere getter und setter } //... equals und hashcode

37 Primärschlüssel- private long id; Default: manuell gesetzter Primärschlüssel

38 Generierungs Strategien Name Description increment Generiert long, int, short basierend auf Tabelle. Nicht in Cluster! identity Identity Columns in DB2, MySQL, MS SQL Server, Sybase, HSQL sequence Sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi, Interbase hilo HI/LO Algorithmus basierend auf Tabelle seqhil HI/LO Algorithmus basierend auf Sequence uuid 128-bit UUID Algorithmus, auf Netzwerk eingeschränkt guid GUID String in MS SQL Server und MySQL native Identity, Sequence oder hilo je nach Datenbank assigned ID wird von Applikation zugewiesen select Zieht ID, die durch Trigger vergeben wird foreign Zieht ID, die durch anderes Objekt vergeben wird sequence-identity Spezialisierte Sequence Generierung basierend auf JDBC 3

39 Primärschlüssel- ( name= SEQ, sequencename= seq_person ) public class strategy=generationtype.sequence, generator= SEQ ) private long id;

40 Primärschlüssel- ( name="tab_gen", table="generator_table", pkcolumnname = "key", valuecolumnname = "hi", pkcolumnvalue = "PERS", allocationsize = "20") public class strategy=generationtype.table, generator= TAB_GEN ) private long id;

41 Mapping von Attributen Platzierung von Annotationen auf Attribut oder Getter-Ebene möglich Platzierung entscheidet über Zugriff (via Reflection oder über Getter) Default: jedes nicht annotierte Attribut ist persistent Alle gängigen Typen werden unterstützt

42 Mapping von für Spaltenkonfiguration Sondermappings für Date und (B)LOB für nicht-persistente Attribute

43 @Entity public class Person PERS_ID ) private long id; PERS_VORNAME, nullable= false ) private String PERS_NACHNAME, nullable= false ) private PERS_GEBURTSTAG) private Date private short alter;... }

44 Mapping von Value Objects Beispiel: Person ist Entität mit konstanter ID, Adresse ist einfaches Objekt ohne konstante ID Person id : long vorname : String nachname : String Adresse strasse : String plz : String stadt : String

45 Mapping von Value Objects Notation Value Object ist in Java nicht vorgesehen Value Object ist einfaches Attribut von Entität Value Object hat keinen eigenen Lebenszyklus Lebenszyklus wird von Entität gesteuert

46 Value Object - public class Adresse ADR_STRASSE ) private String ADR_PLZ ) private String ADR_STADT ) private String stadt; }... getter und public class Person private long id; private String vorname; private String nachname; PERSON ID NUMBER <PK> VORNAME VARCHAR NACHNAME VARCHAR ADR_STRASSE VARCHAR ADR_PLZ VARCHAR ADR_STADT private Adresse anschrift }...

47 Value Object - public class strasse, column=@column(name= PERS_ADR_STRASSE plz, column=@column(name= PERS_ADR_PLZ stadt, column=@column(name= PERS_ADR_STADT )) }) private Adresse public class Adresse ADR_STRASSE ) private String ADR_PLZ ) private String ADR_STADT ) private String stadt; }... getter und setter }...

48 Mapping von Relationen JPA unterstützt folgende Relationen One-To-One One-To-Many Many-To-Many Unterscheidung zwischen uni- und bidirektionalen Relationen Unterstützung für List, Map, Value Objects

49 Relationen Teil 1 Unidirektionale Relation geht nur in eine Richtung und ist daher einfach und empfehlenswert JPA verwaltet bi-direktionale Relationen nicht von selbst (siehe fortgeschrittene Mappings) Best Practice: Aggregate

50 Aggregate gruppieren Entitäten <Entität> Selbstauskunft <Root <Entität> Entität> Kreditantrag <Root <Entität> Entität> Kunde <Entität> TilgungsDetail <Entität> Darlehen <Entität> Adresse

51 Many-To-One Person id : long vorname : String nachname : String Konto nummer : String blz : String PERSON ID NUMBER <PK> VORNAME VARCHAR NACHNAME VARCHAR KONTO_ID NUMBER <FK> KONTO ID NUMBER <PK> NUMMER NUMBER BLZ VARCHAR

52 public class Person private long id; private String vorname; private String private Konto konto public class Konto private long id; private Integer nummer; private String blz; }...

53 public class Person private long id; private String vorname; private PERS_KTO_ID, nullable=false) private Konto konto public class Konto private long id; private Integer nummer; private String blz; }...

54 One-To-Many Person id : long vorname : String nachname : String Konto nummer : String blz : String PERSON ID NUMBER <PK> VORNAME VARCHAR NACHNAME VARCHAR KONTO ID NUMBER <PK> NUMMER NUMBER BLZ VARCHAR PERSON_ID NUMBER <FK>

55 public class Person private long id; private String vorname; private String nachname; Ungeordnete private Set<Konto> konten = new HashSet<Konto>(); public class Konto private long id; private Integer nummer; private String blz; }...

56 public class Person private long id; private String vorname; private KTO_PERSON_ID ) private Set<Konto> konten = new HashSet<Konto> public class Konto private long id; private Integer nummer; private String blz; }...

57 One-To-Many mit public class Person private long id; private String vorname; private KTO_PERSON_ID KTO_ORDER ) private List<Konto> konten = new ArrayList<Konto>(); Spalte wird benötigt, die Reihenfolge persistiert }... KONTO ID NUMBER <PK> NUMMER NUMBER BLZ VARCHAR KTO_PERSON_ID NUMBER <FK> KTO_ORDER NUMBER

58 One-To-One Shared Primary Key Person id : long vorname : String nachname : String Konto nummer : String blz : String PERSON ID NUMBER <PK> VORNAME VARCHAR NACHNAME VARCHAR KONTO ID NUMBER <PK><FK> NUMMER NUMBER BLZ VARCHAR

59 One-To-One Shared Primary public class Person private private Konto konto... public class = name = "myforeigngenerator", strategy = "foreign", parameters = "property", value = "owner") ) private long id; private Person owner;... }

60 One-To-One Unique Foreign Key Person id : long vorname : String nachname : String Konto nummer : String blz : String PERSON ID NUMBER <PK> VORNAME VARCHAR NACHNAME VARCHAR KONTO_ID NUMBER <FK><UNIQUE> KONTO ID NUMBER <PK> NUMMER NUMBER BLZ VARCHAR

61 One-To-One Unique Foreign public class Person private long id; private String vorname; private String KONTO_ID, nullable=false) private Konto public class Konto private long id; private Integer nummer; private String blz; }...

62 Bidirektionale Relationen JPA verwaltet bi-direktionale Relationen nicht von selbst Im Code muss Konsistenz garantiert werden! Ein Ende ist invers, d.h. JPA ignoriert diesen Teil bei Verwaltung und Mapping verweist auf das nicht-inverse Ende Sonst: doppeltes Fremdschlüssel Mapping Tip: Bidirektionale Mappings nach Möglichkeit vermeiden

63 Many-To-One Bidirektional Person id : long vorname : String nachname : String Konto nummer : String blz : String PERSON ID NUMBER <PK> VORNAME VARCHAR NACHNAME VARCHAR KONTO_ID NUMBER <FK> KONTO ID NUMBER <PK> NUMMER NUMBER BLZ VARCHAR

64 Many-To-One / public class Person private long id; private String vorname; private String PERS_KTO_ID, nullable=false) private Konto konto... public class Konto private long id; private Integer nummer; private String konto ) private Set<Person> eigentuemer = new HashSet<Person>(); }...

65 Verwaltung von Bidirektionalen public class Konto private long id; private Integer nummer; private String konto ) private Set<Person> eigentuemer = new HashSet<Person>(); } public void addeigentuemer(person p) { if (p == null) { throw new IllegalArgumentException( p is null ); } if(p.getkonto()!= null) { p.getkonto().geteigentuemer().remove(p); } geteigentuemer().add(p); p.setkonto(this); }...

66 Many-To-Many Person id : long vorname : String nachname : String Team name : String PERSON PERS_TEAM TEAM ID NUMBER <PK> VORNAME VARCHAR NACHNAME VARCHAR PERS_ID NUMBER <FK> TEAM_ID NUMBER <FK> ID NUMBER <PK> NAME VARCHAR

67 public class Person private PERS_TEAM, joincolumns PERS_ID ), inversejoincolumns TEAM_ID ) ) private Set<Team> teams = new HashSet<Team>(); public class Team private long id; private String name; teams ) private Set<Person> personen = new HashSet<Person>();...

68 Lebenszyklus und transitive Persistenz Entitäten haben einen eigenständigen Lebenszyklus TransientObjectException bei folgendem Code ohne transitive Persistenz Konto k = new Konto(); Person p = new Person();... k.setperson(p); session.save(k);

69 Cascade konfiguriert transitive Persistenz JPA unterstützt folgende Cascades ALL PERSIST MERGE REMOVE REFRESH DETACH Hibernate hat andere Semantik!

70 public class Person private long id; private String vorname; private String private Konto konto }...

71 Sonderfall: Orphan Deletion Nur für Collections Löscht eine Entität wenn sie aus einer Collection entfernt wird Zwei Konfigurations / ManyToMany CascadeType.DELETE_ORPHAN)

72 Agenda Zeit Thema 08:00-09:00 Einleitung und theoretische Grundlagen 09:00-09:30 JPA im Überblick 09:45-10:30 Mapping von Klassen 10:30-11:15 Arbeiten mit Hibernate 11:15-11:45 Queries

73 Arbeiten mit JPA und Hibernate Lebenszyklus von Entitäten EntityManager / Session API

74 Lebenszyklus von Entitäten new() Transient gc save() / persist() saveorupdate() merge() Session.get().load().getReference().find() Persistent delete() remove() Removed gc Query.list().uniqueResult().iterate().scroll().getResultList().getSingleResult() evict() clear() close() Detached update() saveorupdate() merge() gc

75 Lebenszyklus von Entitäten Zustand Von Hibernate Verwaltet Datenbank ID transient nein nein persistent ja ja detached nein ja

76 Speichern Ein Objekt wird persistent session.save() gibt die generierte ID sofort zurück (return Serializable) em.persist() gibt keine ID zurück (return void)

77 Löschen em.remove() und session.delete() löschen eine Entity und setzen den Status removed remove() ist JPA API Löschen grosser Datenbestände über HQL hibernate.use_identifier_rollback = true setzt den ID Wert zurück (Status = transient )

78 Laden get() und load() laden persistente Entities find() und getreference() sind JPA API existiert existiert nicht Zugriff get() Entity null Entity / null find() Entity null Entity / null load() Proxy Proxy Entity / Exception getreference() Proxy Proxy Entity / Exception

79 Updates Default: alle Spalten sind im Update enthalten dynamic-update= true bewirkt dynamische SQL Generierung Eigene Dirty Checking Implementierung kann in Interceptor (finddirty())implementiert werden

80 Reattaching session.update() löst immer SQL update aus select-before-update konfiguriert dirty check mittels SELECT (ineffizient, aber bei on update Triggern interesssant) lock() löst kein update aus, sondern führt nur Reattach durch

81 Reattaching merge() verhindert NonUniqueObjectException Das übergebene Objekt ist nicht attached, sondern das zurückgegebene Kopiert alle Properties und Collections Transiente Objekte werden gespeichert

82 Reattaching Objekt mit gleicher ID bereits in Session merge Objekt in Session wird überschreiben saveorupdate NonUniqueObjectException Objekt ist Transient INSERT INSERT Zustand übergebenes Objekt Transient / Detached Persistent Zustand Rückgabe Objekt Persistent - (returns void) Bestandteil von JPA ja nein

83 Agenda Zeit Thema 08:00-09:00 Einleitung und theoretische Grundlagen 09:00-09:30 JPA im Überblick 09:45-10:30 Mapping von Klassen 10:30-11:15 Arbeiten mit Hibernate 11:15-11:45 Queries

84 Arbeiten mit Queries Query q = em.createquery( from Person p where p.nachname = :nachname ).setparameter( nachname, Müller ).setfirstresult(20).setmaxresults(10); List ergebnisse = q.getresultlist(); Query q = em.createquery( from Person p where p.username = :login ).setstring( login, meinlogin ) Person p = (Person)q.getSingleResult(); Criteria c = session.createcriteria(person.class); c.setfirstresult(20); c.setmaxresults(19); List ergebnisse = q.list();

85 name= findpersonbyusername, query= from Person p where p.username = :login ) public class @Column(name= PERS_ID ) private long PERS_USERNAME ) private String username; }... Query q = em.createnamedquery( findpersonbyusername ).setparameter( login, username); List ergebnisse = q.getresultlist();

86 JPA-QL Textuelle Abfrage Sprache Ähnlich zu SQL Geht gegen Objekte und nicht gegen Tabellen Voll Objektorientiert Starkte Verwandschaft zu HQL Query Objekt wird über EntityManager bezogen

87 Einfache JPQL Beispiele from Person Diese Abfragen from Person as p select p from Person as p machen alle das selbe select p from Person p SQL: SELECT * FROM PERSONEN

88 JPQL ist polymorph from Zahlungsart Zahlungsart from LastschriftEinzug from Kreditkarte Lastschrift Kreditkarte from java.lang.object from java.io.serializable

89 Einschränkungen mit where from Person where username = :login from Person p where p.adresse.strasse = :strasse from Person p where p. like %@senacor.% and p.adresse.stadt = Nürnberg and p.lastlogin < :vorgestern

90 Sortierung mit order by from Person p order by p.lastname asc from Person p order by p.lastname asc, p.firstname asc

91 Selektion select p.lastname, p.firstname from Person p Gibt Object Array zurück Rückgabewerte sind keine Entitäten!

92 Aggregation und Gruppierung select p.adresse.stadt, count(p) from Person p group by p.adresse.stadt select p.adresse.stadt, count(p) from Person p group by p.adresse.stadt having p.adresse.stadt like Bad %

93 Inner und Outer Join PERS_ID PERS_NAME... KTO_id... KTO_NR 1 Michael Michael Tina Tina Tina SELECT p.*, k.* FROM Person p INNER JOIN Konto k on p.id = k.pers_id PERS_ID PERS_NAME... KTO_id... KTO_NR 1 Michael Michael Tina Tina Tina Sepp null null 4 Melanie null null SELECT p.*, k.* FROM Person p LEFT OUTER JOIN Konto k on p.id = k.pers_id

94 Joins in JPQL Implizite Navigation from Person p where p.adresse.stadt = Regensburg Inner Join from Person p join p.konten k where k.balance > 0 Fetch Join from Person p left join fetch p.konten

95 QueryDSL

96 Einführung Typ-sicher durch Annotation Processor Unterstützung für SQL, Hibernate / JPA und MongoDB, JDO, Lucene Volle Code Completion Fluent-API

97 Maven <project> <build> <plugins>... <plugin> <groupid>com.mysema.maven</groupid> <artifactid>apt-maven-plugin</artifactid> <version>1.0.6</version> <executions> <execution> <goals> <goal>process</goal> </goals> <configuration> <outputdirectory>target/generated-sources/java</outputdirectory> <processor>com.mysema.query.apt.jpa.jpaannotationprocessor</processor> </configuration> </execution> </executions> </plugin>... </plugins> </build> </project>

98 Formulierung von Abfragen HibernateQuery query = new HibernateQuery(session); JPAQuery query = new JPAQuery(entityManager);

99 Einschränkungen mit Restrictions QPerson person = QPerson.person; Person p = query.from(person).where(person.username.eq( ploed )).uniqueresult(person); QPerson person = QPerson.person; List<Person> p = query.from(person).where(person.alter.between( 10, 14 ), person.lastname.like( P% )).list(person);

100 Sortierung mit orderby QPerson person = QPerson.person; List<Person> p = query.from(person).where(person.alter.between( 10, 14 ), person.lastname.like( P% )).orderby(person.lastname.asc()).list(person);

101 Gruppierung mit Projections QPerson person = QPerson.person; JPAQuery query = new JPAQuery(entityManager); List<Object[]> result = query.from(person).groupby(person.adresse.stadt).listdistinct(person.adresse.stadt, person.adresse.stadt.count();

102 Joins QPerson person = QPerson.person; JPAQuery query = new JPAQuery(entityManager); List<Person> l = query.from(person).innerjoin(person.fotos).orderby(person.username.asc()).distinct().list(person);

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Gregor Raschke 2008 HIBERNATE. Eine Einführung 1 HIBERNATE Eine Einführung Inhalt 2 Einleitung Beispielkonfiguration Die hibernate.cfg.xml Eine Beispieltransaktion Abfragemöglichkeiten JPA und Hibernate Ressourcen und Quellen Einleitung (1) - Geschichtliches

Mehr

Datenzugriffskomponente mit JPA 2.1

Datenzugriffskomponente mit JPA 2.1 Datenzugriffskomponente mit JPA 2.1 (Grundlagen der Java Persistence Architecture) Vladislav Faerman Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der

Mehr

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk Workshop Java Webentwicklung Einführung in Hibernate Ulrich Stärk Ablauf Montag bis Donnerstag 09:00 Uhr s.t. Beginn, bis ca. 17:00 Uhr 1 Stunde Mittagspause Donnerstag Experiment Aufzeichnung der Programmiertätigkeit

Mehr

Ü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

Java Persistence API 2.x. crud + relationships + jp-ql

Java Persistence API 2.x. crud + relationships + jp-ql Java Persistence API 2.x crud + relationships + jp-ql Grundprinzip 10.02.10 2 Problematik Man muss bei der Persistierung immer das Klassenmodell und dessen Umsetzung im Datenmodell (in der DB) berücksichtigen.

Mehr

Inhaltsverzeichnis. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN:

Inhaltsverzeichnis. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN: Inhaltsverzeichnis 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

Datenbankpraktikum, Gruppe F. JPA mit Hibernate. Alexander Stautner, Harald Zauner, Sascha Schreier

Datenbankpraktikum, Gruppe F. JPA mit Hibernate. Alexander Stautner, Harald Zauner, Sascha Schreier JPA mit Hibernate Alexander Stautner, Harald Zauner, Sascha Schreier Agenda Objektrelationales Mapping JPA / Hibernate Demo # 2 Objektrelationales Mapping Objektorientierte Welt Objekte Objektidentität

Mehr

Java Persistence API. Phillip Ghadir Oliver Tigges

Java Persistence API. Phillip Ghadir Oliver Tigges Phillip Ghadir phillip.ghadir@innoq.com Oliver Tigges oliver.tigges@gmx.de Was wissen Sie in 45 Minuten? Wie man mit JPA entwickelt. Dass wir viele Eigenschaften von JPA ausgelassen haben. Dass Sie nicht

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

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

OR-Mapping. WS2008/2009 DBIS/Dr. Karsten Tolle OR-Mapping Zwei Paradigmen treffen aufeinander Gegensätze OO vs. Relational: Stichwort: O/R Impedance Mismatch Person Tabellen mit Schlüssel und Fremdschlusselbeziehungen. Abt-Nr. beschäftigt Pk-Nr Name

Mehr

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

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java Oliver Kalz Agenda Grundlagen Objektpersistenz Objektrelationales Mapping Performance Fazit

Mehr

Kapitel 14. Objekt-relationales Mapping (ORM) mit Hibernate bzw. Java Persistance API (JPA) Prof. Dr. Wolfgang Weber Vorlesung Datenbanken

Kapitel 14. Objekt-relationales Mapping (ORM) mit Hibernate bzw. Java Persistance API (JPA) Prof. Dr. Wolfgang Weber Vorlesung Datenbanken Kapitel 14 Objekt-relationales Mapping (ORM) mit Hibernate bzw. Java Persistance API (JPA) 1 Wozu Objekt-relationales Mapping? - Problematik - Business-Schicht OO-Klassen Unvereinbarkeit der Paradigmen

Mehr

Referent: Marko Modsching. Vortrag: JPA mit Hibernate. Datum: 04.01.2011. Deutsche Software Engineering & Research GmbH

Referent: Marko Modsching. Vortrag: JPA mit Hibernate. Datum: 04.01.2011. Deutsche Software Engineering & Research GmbH Referent: Marko Modsching Vortrag: JPA mit Hibernate Datum: 04.01.2011 Deutsche Software Engineering & Research GmbH Steinstraße 11 02826 Görlitz Germany Telefon: +49 35 81 / 374 99 0 Telefax: +49 35 81

Mehr

Hibernate Das Praxisbuch für Entwickler

Hibernate Das Praxisbuch für Entwickler Sebastian Hennebrüder 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Hibernate Das Praxisbuch für Entwickler Galileo

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

Java Persistence API mit Hibernate

Java Persistence API mit Hibernate Seminarunterlage Version: 6.02 Version 6.02 vom 4. April 2018 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

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

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

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

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate 1 von 43 Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate 27.11.11 Agenda Einleitung Ist-Zustand Bookstore Was ist Hibernate? Wie funktioniert Hibernate? Was ist Spring? Architektur

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 6.

Mehr

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

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

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

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

Datenmanagement in Android-Apps. 16. Mai 2013

Datenmanagement in Android-Apps. 16. Mai 2013 Datenmanagement in Android-Apps 16. Mai 2013 Überblick Strukturierung von datenorientierten Android-Apps Schichtenarchitektur Möglichkeiten der Datenhaltung: in Dateien, die auf der SDCard liegen in einer

Mehr

Relationales Datenbankpraktikum

Relationales Datenbankpraktikum Relationales Datenbankpraktikum Dr. A. Groß, M.Junghanns, V. Christen, Z. Sehili Aufgabe 3 Agenda Überblick zur Aufgabenstellung Hibernate Verwendung des Hibernate- Mapping und HQL innerhalb einer Konsolenapplikation

Mehr

Universität Stuttgart Abteilung Anwendersoftware 01.07.2002. - Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures

Universität Stuttgart Abteilung Anwendersoftware 01.07.2002. - Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures SQLJ Basics Universität Stuttgart Abteilung Anwendersoftware 01.07.2002 Was ist SQLJ? SQLJ Part 0: - Steht für Embedded SQL in Java SQLJ Part 1: - Java-Methoden als SQL Stored-Procedures SQLJ Part 2: -

Mehr

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

Java-Persistenz-Architekturen. Freiberuflicher Entwickler und Autor.   DOAG Konferenz 1.12. Java-Persistenz-Architekturen Rudolf Jansen Freiberuflicher Entwickler und Autor http://www.rudolf-jansen.de info@rudolf-jansen.de DOAG Konferenz 1.12.2008 Inhalt JDBC JPA (Java Persistence API) Spring

Mehr

Java-Persistence-API mit Hibernate

Java-Persistence-API mit Hibernate Bernd Müller, Harald Wehr Java-Persistence-API mit Hibernate Standardisierte Persistenz f Г- Щ.4 1 fl/j J ; Щ Ш Ш ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England

Mehr

Eclipse und EclipseLink

Eclipse und EclipseLink Eclipse und EclipseLink Johannes Michler Johannes.Michler@promatis.de PROMATIS, Ettlingen Zugriff auf Oracle Datenbanken aus Eclipse RCP Anwendungen via EclipseLink 18.09.2009 1 Gliederung Eclipse als

Mehr

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

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

Mehr

O/R Mapper. O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010

O/R Mapper. O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010 O/R Mapper O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010 Agenda Object-relational impedance mismatch Mapping Session Abfragen No. 2 Object-relational impedance mismatch Object-relational

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

Ü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

JPA mit Hibernate Java Persistence API in der Praxis

JPA mit Hibernate Java Persistence API in der Praxis Daniel Röder JPA mit Hibernate Java Persistence API in der Praxis V Vorwort 15 V.l Aufbau des Buches < 15. V.2 Webseite zum Buch 16 i V.3 Danksagung 16 1 Einleitung 17 1.1 Impedance Mismatch 17 1.1.1 Granulär

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

Architektur des agimatec-validation Frameworks

Architektur des agimatec-validation Frameworks Development : Implementierung Validierungskonzept (Dokumentation) This page last changed on Apr 03, 2008 by roman.stumm. Architektur des agimatec-validation Frameworks Generierung der Metainformationen

Mehr

Hibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing

Hibernate Search. Unterstützung laufender Java Projekte. Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence Center) Schlüsselfertige

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans JPA - JAVA Persistence API Problem In JAVA-programmen arbeitet man mit Hauptspeicherobjekten. Nach Beendigung des Programmes sind diese nicht mehr vorhanden.

Mehr

Datenbank und Informationssysteme

Datenbank und Informationssysteme Datenbank und Informationssysteme Inhaltsverzeichnis 1 Programmierung von Datenbankzugriffen 3 1.1 Architektur des SQL/CLI am Beispiel JDBC................... 4 1.2 Anfragen und Ergebnismengen in JDBC......................

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

MIN oder MAX Bildung per B*Tree Index Hint

MIN oder MAX Bildung per B*Tree Index Hint E-Mail: rainer@lambertz-c.de Internet: http://www.lambertz-c.de MIN oder MAX Bildung per B*Tree Index Hint Zugegeben, der Trick Min- oder Maximalwerte per Index Hint zu ermitteln ist nicht neu. Gewöhnlich

Mehr

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel ORM & OLAP Object-oriented Enterprise Application Programming Model for In-Memory Databases Sebastian Oergel Probleme 2 Datenbanken sind elementar für Business-Anwendungen Gängiges Datenbankparadigma:

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

Christian Kühl. Von JDO zu JPA Entwicklung einer Migrationsstrategie

Christian Kühl. Von JDO zu JPA Entwicklung einer Migrationsstrategie Christian Kühl Von JDO zu JPA Entwicklung einer Migrationsstrategie Inhalt JDO und JPA Motivation Was muss migriert werden? Strategien Architektur Beispiel Migration am Beispiel Automatisierung Probleme

Mehr

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

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql JDBC inoffizielle Abkürzung für: Java Database Connectivity seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql ist eine Menge von Klassen und Methoden, um aus Java-Programmen relationale Datenbanken

Mehr

Bibliografische Informationen digitalisiert durch http://d-nb.info/995021198

Bibliografische Informationen digitalisiert durch http://d-nb.info/995021198 Auf einen Blick 1 Einleitung 15 2 Datenbankentwurf 23 3 Datenbankdefinition 43 4 Datensätze einfügen (INSERT INTO) 95 5 Daten abfragen (SELECT) 99 6 Daten aus mehreren Tabellen abfragen (JOIN) 143 7 Unterabfragen

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: DB-Mock (1/7) Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen

FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen Sommersemester 2014 Michael Theis, Lehrbeauftragter Manager Persistence Context persist flush find Datastore merge flush remove flush

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

PostgreSQL und memcached

PostgreSQL und memcached Building a Query Cache imos GmbH 11.11.2011 / PGconf.DE Outline Einführung 1 Einführung 2 3 Szenario Einführung Webapplikation Pro Request viele, größtenteils einfache, Queries Einteilung von Caches Tradeoff

Mehr

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt

Mehr

Ich liebe Java && Ich liebe C# Rolf Borst

Ich liebe Java && Ich liebe C# Rolf Borst Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

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

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

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

Mehr

Übungsaufgaben zur Klausurvorbereitung Datenbanken 2, SoSe 2016

Übungsaufgaben zur Klausurvorbereitung Datenbanken 2, SoSe 2016 Die nachfolgenden Aufgaben sind nach Kategorien geordnet und stellen eine Auswahl von Aufgaben aus alten Klausuren des bisherigen Bachelor-WP-Fachs Datenbank Anwendungsentwicklung dar. Kategorie 1: OR-Mapping

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp <hwr@pilhuhn.de>

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp <hwr@pilhuhn.de> EJB 3 Ein Blick über den Tellerrand Heiko W. Rupp Agenda Abriss des Standards Blick auf vorhandene Implementierungen Erfahrungen aus der Praxis Verlosung der 2 Bücher Agenda Abriss des

Mehr

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 Hochschule Darmstadt DATENBANKEN Fachbereich Informatik Praktikum 3 Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 11.09.2009 PL/SQL Programmierung Anwendung des Cursor Konzepts und Stored Procedures Und Trigger

Mehr

SQL. Fortgeschrittene Konzepte Auszug

SQL. Fortgeschrittene Konzepte Auszug SQL Fortgeschrittene Konzepte Auszug Levels SQL92 Unterteilung in 3 Levels Entry Level (i.w. SQL89) wird von nahezu allen DBS Herstellern unterstützt Intermediate Level Full Level SQL DML 2-2 SQL92 behebt

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

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug. 2007. Name: Note:

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug. 2007. Name: Note: 1 Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug. 2007 Name: Note: Nr. Aufgaben Max. Punkte Erreichte Punkte 1 Grundlagen ~ 10% Vgl. Hinweis unten 2 Integrität, Procedures, Triggers, Sichten ~ 20%

Mehr

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT 1 Metadaten a) Wozu werden Metadaten im Umfeld von DBMS benötigt? b) Nennen Sie mindestens zwei weitere Anwendungsfelder, in denen Metadaten zum Einsatz kommen.

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

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester

Mehr

NHibernate vs. Entity Framework

NHibernate vs. Entity Framework Manfred Steyer CAMPUS 02 softwarearchitekt.at NHibernate vs. Entity Framework Ziele NHibernate und Entity Framework sowie deren Unterschiede kennen lernen 1 Agenda Kriterien Beispiel mit EF Beispiel mit

Mehr

SQL: statische Integrität

SQL: statische Integrität SQL: statische Integrität.1 SQL: statische Integrität Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen erfüllen. Integritätsbedingungen

Mehr

4. Objektrelationales Mapping Grundlagen der Programmierung II (Java)

4. Objektrelationales Mapping Grundlagen der Programmierung II (Java) 4. Objektrelationales Mapping Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler

Mehr

WPF Steuerelemente Listbox, ComboBox, ListView,

WPF Steuerelemente Listbox, ComboBox, ListView, WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,

Mehr

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version 7.4.4. - Optional einen DHCP Server.

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version 7.4.4. - Optional einen DHCP Server. 1. Dynamic Host Configuration Protocol 1.1 Einleitung Im Folgenden wird die Konfiguration von DHCP beschrieben. Sie setzen den Bintec Router entweder als DHCP Server, DHCP Client oder als DHCP Relay Agent

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

Aufgaben zu XPath und XQuery

Aufgaben zu XPath und XQuery Aufgaben zu XPath und XQuery Dr. Arno Schmidhauser Letzte Revision: März 2005 Email: arno.schmidhauser@sws.bfh.ch Webseite: http://www.sws.bfh.ch/db Inhalt 1 XPath... 2 2 XQuery... 2 3 XPath/SQL Umsetzung...

Mehr

SQL und MySQL. Kristian Köhntopp

SQL und MySQL. Kristian Köhntopp SQL und MySQL Kristian Köhntopp Wieso SQL? Datenbanken seit den frühen 1950er Jahren: Hierarchische Datenbanken Netzwerkdatenbanken Relationale Datenbanken = SQL Relational? 10 9 8 7 6 f(y) := y = x r(y)

Mehr

Klausur Interoperabilität

Klausur Interoperabilität Klausur 21. Juni 2012 9.30 11.00 Uhr Workflow Systems and Technology Group Fakultät für Informatik Universität Wien Univ.-Prof. Dr. Stefanie Rinderle-Ma Allgemeine Hinweise: Die Bearbeitungszeit beträgt

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

Assoziation und Aggregation

Assoziation und Aggregation Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben

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

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

Prozedurale Datenbank- Anwendungsprogrammierung

Prozedurale Datenbank- Anwendungsprogrammierung Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.

Mehr

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 Kapitel 33 Der xml-datentyp In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023 995 996 Kapitel 33: Der xml-datentyp Eine der wichtigsten

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

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

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1 Kapitel 10 JDBC und SQLJ 1 JDBC und SQLJ Bisher: Einbettung von SQL (statisch bzw. dynamisch) in C, C++, COBOL, ADA (embedded SQL) bzw. prozedurale Erweiterungen für SQL in Oracle (PL/SQL) Was ist mit

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

Bean-Mapping mit MapStruct

Bean-Mapping mit MapStruct Machst Du noch Reflection oder annotierst Du schon? Bean-Mapping mit MapStruct Thomas Much thomas@muchsoft.com www.muchsoft.com 1 20 Jahre Java, 18 Jahre Beans JavaBeans JAXBEntities 2015 2006 2005 2000

Mehr

Allgemeines zu Datenbanken

Allgemeines zu Datenbanken Allgemeines zu Datenbanken Was ist eine Datenbank? Datensatz Zusammenfassung von Datenelementen mit fester Struktur Z.B.: Kunde Alois Müller, Hegenheimerstr. 28, Basel Datenbank Sammlung von strukturierten,

Mehr

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring?

Oliver Paulus, oliver@code-project.org. 7. Februar 2006. Spring Framework Einführung. Oliver Paulus, oliver@codeproject.org. Was ist Spring? oliver@code-project.org 7. Februar 2006 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2 3 4 5 6 7 8 9 Inhalt 1 2

Mehr

Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 Objekt-relationales Mapping 2 Objekt-relationales Mapping Mit JDBC kann Java sich mit relationalen Datenbanken verbinden. Objekt-relationales

Mehr

Rich Domain Model mit JPA 2.0

Rich Domain Model mit JPA 2.0 Rich Domain Model mit JPA 2.0 Adrian Hummel Consultant adrian.hummel@trivadis.com Mischa Kölliker Principal Consultant mischa.koelliker@trivadis.com Java Forum Stuttgart, 1. Juli 2010 Basel Baden Bern

Mehr

Unsere Webapplikation erweitern

Unsere Webapplikation erweitern Unsere Webapplikation erweitern Um die Webapplikation zu benutzen: 1. Starten Sie den Server, indem Sie das Hauptprogramm in der Klasse ImdbServer starten. 2. Laden Sie im Browser die Seite http://localhost:8080/html/index.html.

Mehr

Willkommen. Datenbanken und Anbindung

Willkommen. Datenbanken und Anbindung Willkommen Datenbanken und Anbindung Welche stehen zur Wahl? MySQL Sehr weit verbreitetes DBS (YT, FB, Twitter) Open-Source und Enterprise-Version Libs in C/C++ und Java verfügbar Grundsätzlich ist ein

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Tag 4 Inhaltsverzeichnis

Tag 4 Inhaltsverzeichnis Tag 4 Inhaltsverzeichnis Normalformen Problem Formen (1-4) Weitere Formen Transaktionen Synchronisationsprobleme Überblick Autocommit Locking Savepoints Isolation levels Übungen RDB 4-1 Normalformen Problematik

Mehr