AutomatisiertePersistenz: Persistenz-Frameworks

Größe: px
Ab Seite anzeigen:

Download "AutomatisiertePersistenz: Persistenz-Frameworks"

Transkript

1 AutomatisiertePersistenz: Persistenz-Frameworks

2 Was ist Persistenz? Persistenz bedeutet, dass die Objekte die Programmausführung überdauern Praktisch: Objekte werden in einer Datenbank "aufbewahrt" Auch Dateisystem möglich Nicht: Die Objekte holen sich Ihre Infos aus einer Datenbank, Sondern: Die Objekte werde aus der Datenbank geholt 3-Schichten-Architektur: Datenhaltungsschicht muss alle relevanten Objekte dauerhaft abspeichern so dass sie das Programmende überleben Außerdem können bei großen Anwendungen nicht alle Objekte speicherresident sein Zwischenspeicherung in der DB. (c) schmiedecke 08 SE2-4-Persistenzmodelle 2

3 OR-Mapping Abbildung vom Klassenmodell auf das Relationale Datenmodell. Systematische Zuordnung (OR-Mapping) Bis auf Vererbung identisch mit der Abbildung ERM Relationales Modell Klasse Tabelle oder Tabellengruppe Beziehung Fremdschlüssel und ggf. Verknüpfungstabelle Vererbung Tabelle oder Tabellengruppe Damit kann das Relationale Schema für die Persistenz automatisch erzeugt werden. (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 3

4 Direkte Datenbank-Anbindung per JDBC class ERM online shop Produk t - Produktnummer: int - Preis: double - Name: String - Info: String - AnzKolli: int - Gewicht: double * * * Kunde Einkaufswagen - Name: String - Datum: Date Strasse: String - Ort: String - PLZ: int JDBC 1 * Orde r - Bestelldatum: Date - Lieferdatum: Date - Versandform: String - Rechnungsnummer: int - Bearbeiter: String 1 1..* * * 1 Kreditk arte - Kartentyp: String - Kartennummer: int - Gültigkeit: Date Beziehung zwischen Klassen und Tabellen nicht erkennbar Regeln für den "Zusammenbau" von Objekten aus DB-Daten müssen explizit programmiert werden SQL-Verwendung: Datenbank enthält Daten, nicht Objekte, d.h. es kann nicht direkt nach Objekten gesucht werden (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 4

5 ORM class ERM online shop Produk t - Produktnummer: int - Preis: double - Name: String - Info: String - AnzKolli: int - Gewicht: double * * Einkaufswagen - Datum: Date * 1 1 Kunde - Name: String - Strasse: String - Ort: String - PLZ: int ORM 1 * Orde r - Bestelldatum: Date - Lieferdatum: Date - Versandform: String - Rechnungsnummer: int - Bearbeiter: String 1 1..* * * 1 Kreditk arte - Kartentyp: String - Kartennummer: int - Gültigkeit: Date ORM liefert die Abbildung zwischen Klassen und Tabellen (- gruppen) Query Language ermöglicht Suche auf Objektebene Es gibt keine DML, sondern Objekte werden manipuliert und dann persistiert (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 5

6 OR-Mapping auf dem Weg zum Traum OR-Mapping Abbildungsschema zwischen Objektmodell und Datenmodell Entitytyp (~"Tablelle") und Klasse sind verwandte Konzepte Abbildung "einfacher Objekte", d.h. von Objekten, die keine weiteren Objekte enthalten / referieren, ist trivial: Klasse wird Tabelle Attribute werden Tabellenattribute Komplexe Objekte und Objektbeziehungen erfordern komplexere Abbildung (c) schmiedecke 08 SE2-4-Persistenzmodelle 6

7 ORM mit JPA JPA = Java Persistence API Bestandteil von EJB 3 aber auch in JSA nutzbar. Bei Ausführung* wird das DB- Schema erzeugt Kennzeichnung der zu persistierenden Klassen durch *) Ausführung eines DB-Zugriffs Kennzeichnung der Beziehungen Kennzeichnung der Vererbungs-Strategie durch ) Spezifikation des DB-Zugangs in einer PersistenceUnit (persistence.xml) (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 7

8 Beispiel-Modell von ArgoUML generierter Code: public class Student extends Unimitglied { } public int matrikelnummer; public int semester; /** * Dozent */ public Vector mydozent; public Dozent mydozent; (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 8

9 Von der Klasse zur Entity von ArgoUML generierter Code: komplettierter und annotierter Code: public class Student extends Unimitglied { } public int matrikelnummer; public int semester; /** * Dozent */ public Vector mydozent; public Dozent public class Student extends Unimitglied Integer id; int matrikelnummer; int Collection<Dozent> Dozent mytutor; public Integer getid() { } public int getmatrikelnummer() { } publíc void setid(integer id) { } public void setmatrikelnummer( ){ } (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 9 }

10 Automatisch erzeugtes DB-Schema Das Schema hängt von der gewählten Vererbungs-Strategie ab! (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 10

11 Entity-Annotation public class Student int id; public int getid() { return id; } public void setid(int id) { this.id=id; } deklariert eine Klasse als persistent. Die Angabe des Tabellennamens ist optional standardmäßig wird der Klassenname verwendet. Alle Attribute müssen als Properties gekapselt werden. Es muss eine Property eingefügt werden, am besten mit generierten Werten. (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 11

12 public class Unimitglied {.} Die Vererbungs-Strategie wird bei der Basisklasse annotiert Standard ist SINGLE_TABLE JOINED entspricht Einzeltabellen für alle Klassen der Hierarchie Die Strategie TABLE_PER_CLASS (Tabelle je konkrete Klasse) muss nicht auf allen Servern implementiert sein (Testen Sie Glassfish daraufhin) (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 12

13 ORM: Attributspezifikation per BLOB oder CLOB nach eigebettetes Objekt (strukturiertes Objekt mit 1:1-Beziehung) (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 13

14 private Collection<Dozent> private Dozent = "mydozent") private Collection<Student> mystudent; Annotation entweder immer der Attribute oder immer der Getter. Annotation entsprechend den Kardinalitäten. sollte der Typ eine generische Collection sein (oder eine Unterklasse von Collection). Ersatzweise kann der Elementtyp als Attribut targetentity="dozent" angegeben werden. Bei bidirektionalen Assoziationen muss auf der zweiten Seite in einer mappedby-angabe der Name des bezugnehmenden Attributs der ersten Seite angegeben werden. kann das Attribut optional=false gesetzt werden (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 14

15 Kurzanleitung zum "Zaubern" (CRUD) 1. JSF-Projekt anlegen 2. Im SourcePackages-Verzeichnis ein Paket mit annotierten Entity- Klassen erzeugen. 3. Eine PersistenceUnit anlegen (Netbeans fordert sie dazu auf wählen sie am besten eine leere DB) 4. Im Kontextmenü des Projekts New >> JSF Pages from Entity Classes wählen und die gewünschten Klassen selektieren 5. warten 6. Projekt ausführen. Wenn sie mögen, tragen Sie Werte ein. 7. DB ansehen / bestaunen. (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 15

16 (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 16

17 ORM ist noch nicht Persistenz OR-Mapping: Wie werden Objekte auf Datenbanktupel abgebildet? Genauer: Wie wird das Klassenmodell auf das Datenbankschema abgebildet? DB-Connection: Wie baut man die Verbindung zur richtigen Datenbank auf? Objekt-Materialisierung, -Dematerialisierung und -Suche Wie werden aus Tupeln Objekte gebaut? Und welche referierten Tupel werden mit geladen? Und wie findet man die Objekte in der Datenbank? Objekt-Caching und -Synchronisation: Wie werden Speicherobjekte und Datenbank synchron gehalten? (c) schmiedecke 08 SE2-4-Persistenzmodelle 17

18 Persistenz mit JPA Java Persistence API Persistenzmodell der EJB 3.0-Spezifikation mehrere Implementierungen (Hibernate JPA, toplink, ) Auf jedem JEE-Server vorhanden Aber seit EJB 3.0 auch für POJOS (=Plain Old Java Objects), d.h. ausgelagert aus JEE. Jede Java-Klasse kann "Persistent Entity" sein wenn sie "will" Java-5-Annotationen spezifizieren Persistenz ORM Umgang mit Abhängigkeiten Ladeverhalten soweit waren wir schon (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 18

19 Ein paar Vokabeln vorweg Persistence Provider - die JPA-Implementierung Persistence Unit - Realisierung einer DB-Anbindung - konfiguriert in der persistence.xml Persistence Context - die Speicherobjekte (der Cache) Entity-Manager - verwendet die Persistence Unit - realisiert (De-)Materialisierung - setzt die Objektsuche um - verwaltet den Cache (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 19

20 Entity-Manager Applikation find query Entity Manager Detached objects persist remove Persistenz-Kontext flush merge refresh DB (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 20

21 Wie erhält man den EntityManager: J2SE Referenz auf EntityManager kann durch eine Factory erzeugt werden. Der zugehörige Persistenz-Kontext gilt für die Lebensdauer des EntityManagers (Extendend) private EntityManager entitymanager = EntityManagerFactory.createEntityManager() JEE Ein Persistenz-Kontext gilt (per default) für eine Transaktion. Referenz auf Entity-Manager wird "injiziert" (Dependency injection), d.h. von der Umgebung (automatisch) private EntityManager entitymanager; (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 21

22 Arbeiten im Persistenz-Kontext CLIENT-Operation: JPA-Umsetzung Dozent dozent1 = jpahelper.create(); Dozent obj = new Dozent(); entitymanager.persist(obj); return obj; dozent.setname("schmiedecke"); jpahelper.update(dozent); entitymanager.merge(dozent); //Objekt aktualisieren jpahelper.refresh(dozent); entitymanager.refresh(dozent); jpahelper.detach(dozent); entitymangager.remove(dozent); jpahelper.refresh(dozent); entitymanager.refresh(???); // detached, also unbekannt Dozent d2 = jpahelper.findbyname("sauer"); Query query = entitymanager.createquery (c) schmiedecke 12 ("SELECT d FROM dozent WHERE s.name="sauer"); SE2-6-7-Architekturübersicht return (Dozent) (query.getresultlist().getrow(0)); 22

23 Objektsuche: Queries in JPA EntityManager ermöglicht das Erstellen und Ausführen von Queries Statische "NamedQueries", als Entity-Annotationen definiert Dynamisch erzeugte Queries Flush-Modus: Vor jeder Query wird der Persistenz-Kontext synchronisiert SQL-Abfragen sog. "Native Queries" werden als Strings an die DB weitergerichteher weniger sinnvoll, da das DB-Schema eigentlich verborgen ist JPQL die Abfragesprache von JPA Selektionsabfragen Nachbildung der SQL auf Objektebene Weitergabe dennoch als Strings Aktualisierungs- und Löschanweisungen (Nur selten sinnvoll, etwa Massenaktualisierungen; sollte besser auf der Ebene der Geschäftsobjekte erfolgen) Criteria API programmatische Abfragen auf Objektebene in Java (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 23

24 JPQL Grundsyntax der SELECT-Klauseln wie SQL: SELECT, WHERE, AND, OR, ORDER BY etc die üblichen arithmetischen, logischen und Vergleichsoperationen die Variablen sind Pfadausdrücke im Klassenschema können über Klassengrenzen führen "SELECT s.mytutor.fb FROM Student s" Parametrisierung nummerierte Parameter?0,?1,?2 Namensparameter :name, :vorname, :matrikel Setzen durch setparameter() auf einer Query Query q = em.createquery("select WHERE s =?0"); q.setparameter(0, 1234); List<String> liste = q.getresultlist(); (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 24

25 Named Queries Vor kann eine Liste von benannten Abfragen stehen, die sich auf dieklasse beziehen. JPQL- oder "native" (SQL) query="select s FROM Student query="select * FROM public class Student extends Unimitglied { } Verwendung mit createnamedquery: List<Student> liste = em.createnamedquery("allestudentennativ").getresultlist(); (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 25

26 Der Java-Weg: Criteria-Query Queries werden als Java-Objekte "gebaut" Typsicher und Injection-sicher Idee ähnlich JDBC: CriteriaQuery-Objekt gehört zu einem EntityManager der CriteriaQuery werden schrittweise die Kriterien hinzugefügt die CriteriaQuery wird "abgeschickt" und liefert eine ResultList oder ein SingleResult (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 26

27 Aufbau einer CriteriaQuery public List<Student> findall() { } EntityManager em = getentitymanager(); CriteriaQuery cq = em.getcriteriabuilder().createquery(); cq.select(cq.from(student.class)); Query q = em.createquery(cq); return q.getresultlist(); (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 27

28 Aufbau einer CriteriaQuery SingleResult public Long count() { } EntityManager em = getentitymanager(); CriteriaQuery cq = em.getcriteriabuilder().createquery(); Root<Student> rt = cq.from(student.class); cq.select(em.getcriteriabuilder().count(rt)); Query q = em.createquery(cq); return ((Long)q.getSingleResult()).intValue(); (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 28

29 Klauseln einer CriteriaQuery Quelle: (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 29

30 Transaktionen Zurückschreiben in die DB Es gibt viele Möglichkeiten in JPA, Transaktionen explizit oder implizit zu nutzen. Hier nur die einfachsten und gebräuchlichsten, JSE Schließen des EntityManagers (em.close()) beendet den PersistenceContext und damit die aktuelle Transaktion JEE Wenn der EntityManager injiziert wurde, stellt automatisch der Aufruf einer Bean-Methode eine Transaktion dar. (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 30

31 Transaktionen hinter den Kulissen - der Objekte-Cache Sammelbecken für materialisierte Objekte Dematerialiserung bei Transaktionsende Speicherbedarf expliziter Speicherung oder Synchronisation Transaktionszustände der Cache-Objekte Es gibt materialisierte und neu erzeugte Objekte Objekte können im Cache verändert oder gelöscht werden 6 Transaktionszustände: new clean, old clean new dirty, old dirty new deleted, old deleted pro Transaktionszustand ein Cachebereich (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 31

32 Dematerialisierung bedeutet Synchronisation new clean old clean neu erzeugte (nicht materialisierte) Objekte, die nicht verändert wurden Objekt in die Datenbank einfügen (insert) old clean old clean alte materialisierte Objekte, die nicht verändert wurden keine Aktion notwendig new dirty old clean neu erzeugte (nicht materialisierte) Objekte, die verändert wurden Objekt in die Datenbank einfügen (insert) old dirty old clean alte materialisierte Objekte, die verändert wurden Objekt in der Datenbank aktualisieren (update) new deleted X neu erzeugte (nicht materialisierte) Objekte, die gelöscht wurden Objekt aus dem Cache löschen old deleted X alte materialisierte Objekte, die gelöscht wurden Objekt aus der Datenbank löschen (delete) (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 32

33 Synchronisation (bei Transaktionsende) new clean old clean new dirty old dirty new deleted old deleted Cache-Aktionen abhängig von Transaktionszuständen Zustände können automatisch verwaltet.werden. (c) schmiedecke 12 SE2-6-7-Architekturübersicht 33

34 Persistenzkonzepte behandelt OR-Mapping: Wie werden Objekte auf Datenbanktupel abgebildet? Genauer: Wie wird das Klassenmodell auf das Datenbankschema abgebildet? DB-Connection: Wie baut man die Verbindung zur richtigen Datenbank auf? Objekt-Materialisierung, -Dematerialisierung und -Suche Wie werden aus Tupeln Objekte gebaut? Und welche referierten Tupel werden mit geladen? Und wie findet man die Objekte in der Datenbank? Objekt-Caching und -Synchronisation: Wie werden Speicherobjekte und Datenbank synchron gehalten? (c) schmiedecke 08 SE2-4-Persistenzmodelle 34

35 Fazit: Persistenz ist machbar! saubere Strukturen klare Regeln aber mühsam! Persistenz-Frameworks nehmen uns die Arbeit ab! Persistenz ohne Programmierleistung Minimaler Konfigurationsaufwand Und ein leicht zu verstehendes Konzept (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 35

36 Der Traum: Transparente Persistenz Animation unter stence.html Abfolge Application will Person benutzen Cache ist leer Mapping holt Persontupel aus der DB Person wird im Cache aufgebaut Zugriffsversuch auf Adresse fehlt im Cache Bezug aus der DB Update Adresse Rückschreiben in die DB (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 36

37 Wer materialisiert die Objekte? Direkte und indirekte Persistenz Direkte Persistenz: jedes persistente Objekt enthält Methoden, um sich selbst zu materialisieren / dematerialisieren / synchronisieren. Wissen über den DB-Zugang und den entsprechenden Teil des Datenmodells sind in jeder Klasse vorhanden. DB-Zugang, Datenmodell und Persistenzstrategie schwer änderbar. Indirekte Persistenz den Fachobjekten sind Persistierungsobjekte sind zugeordnet Materialisierung / Dematerialisierung / Synchronisation erfolgt "von außen" als Service für die Fachobjekte. Voraussetzung für transparente Persistenz. (c) schmiedecke 08 SE2-4-Persistenzmodelle 37

38 Transparente Persistenz Ziel ist eine transparente Persistenz Die Anwendung soll mit Objekten arbeiten und möglichst wenig von der Persistenz merken Das bedeutet kapseln: Zugriffswissen kapseln DAO-Muster Zugriffs - und Klassenwissen trennen Broker-Muster (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 38

39 DAO Data Access Objects (Persistierungsobjekte) Annahme aus der Analysephase: Klasse verwaltet die Menge ihrer Objekte würde jetzt bedeuten, dass jede Klasse die DB-Details kennt nicht transparent DB-Wechsel sehr aufwändig Data Access Object der Objekte-Baumeister: Klassenspezifisches Zugriffsobjekt kapselt die DB-Details liefert und persistiert die Anwendungsobjekte Nachteile Für jede Klasse ein DAO Viel redundanter Code Viel Aufwand bei DB-Wechsel (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 39

40 Das Broker-Muster kennt und verwaltet den Objekt-Cache benutzt getobject(oid, class) Methode getobject(oid, class) ist abstract kennt die DB kann den passenden Objektbroker ermitteln Methode getobject(oid, class) ist Schablone, benutzt getobject(oid) Methode getobject(oid) ist abstract kennt und verwaltet den Objekt-Cache Methode getobject ist implementiert Der Klassenspezifische DAO-Anteil ist klein und DB-neutral: (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 40

41 Generische Lösung AbstractDAO <Type> getobject(int id):<type> StudentDAO getobject(int id):student ORM- Manager Einfachere Umsetzung mit generischen Klassen: Die Klasse AbstractDAO enthält getobject als generische Schablonenmethode Die Verbindungsinformation und der DB-Zugriff wird als separates Objekt eingebunden In der Konkretisierung wird der tatsächliche Typ eingesetzt (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 41

42 OR-Mapping Lazy Materialization Laden externer Objekte: Was ist mit den assoziierten Objekten? Objektstruktur kann stark verzweigen... Proxy-Entwurfsmuster: Objekt erreichbar über ein Stellvertreterobjekt (Proxy) Proxy liegt im Speicher besorgt das Nachladen des Objekts bei Bedarf enthält das OID (c) schmiedecke 08 SE2-4-Persistenzmodelle 42

43 Proxy-Entwurfsmuster Objektassoziation des Client verweist auf einen Platzhalter Proxy, imitiert Struktur des realen Subjekts. Anfrage (request) erzeugt Bedarf: Das reale Subjekt wird geladen und die Anfrage delegiert. (c) schmiedecke 08 SE2-4-Persistenzmodelle 43

44 DAO mit Proxy- und Broker-Muster class Slides Stundenplan Dozent + getadresse() : Adress DozentReal + getadresse() : Address DozentProxy + getadresse() : Address DbBroker + getobject(int) : Object DerbyBroker + getobject(int) : Object DozentDAO + getobject(int) : Object erst bei Bedarf wird Dozent als DozentReal mithilfe des DAO materialisiert der gesamte Persistenzapparat bleibt unter der Oberfläche. (c) schmiedecke 12 SE2-6-7-Architekturübersicht 44

45 Fazit Persistenz-Frameworks liefern den sicheren Umgang mit persistierten Objekten. Ziel: POJO-Architektur Die Schnittstelle zur Persistenz wird aus den Fachobjekten ausgelagert DAOs. Fachobjekte sind POJOS Alternativer Ansatz: "Active Record" Jedes Fachobjekt erweitert eine Persistierungsklasse. (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 45

46 Alternative OO-DB-Persistenz ORM entfällt Persistenzkonzepte, Caching und Synchronisation bleiben. Probieren Sie z.b. db4o, Sie werden staunen, wie leicht das ist! (www.db4o.com) (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 46

47 Die wichtigsten Java-Persistenzframeworks Hibernate Der Klassiker (~2002) Gavin King & Team Bekannt als ORM-Framework Konzept- und Begriffsbilder (Persistenz, Entity, ) JDO - Java Data Objects Spezifikation, einige Referenz-Implementierungen Vereinfachte Persistenz von POJOS D.h. persistente Objekte müssen nichts implementieren JPA Java Persistence API Modernstes Konzept, Spezifikation Bestandteil von JEE (EJB 3.0) aber herauslösbar Ebenfalls POJO-Persistenz (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 47

48 Weitere Java-ORM-Frameworks (open source) Ibatis SQL Maps OJB Torque Castor Cayenne TJDO JDBM Prevayler JPOX Speedo Jaxor pbeans SimpleORM Smyle XORM O/R Broker Mr.Persister Java Ultra Light Persistence JDBCPersistence Ammentos Velosurf PAT daozero QLOR ODAL JPersist BeanKeeper Open JPA Super CSV SeQuaLite Persist... (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 48

49 Versprochen, das war's in Sachen Persistenz! (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 49

50 Anhang: Annotations-Details (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 50

51 ORM: Beziehungsspezifikation per Annotation Unidirektionale 1:1-Beziehung Kunde Agentur 0..1 public class Kunde { private int id; private public Agentur getagentur() { return agentur; } } (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 51

52 ORM: Beziehungsspezifikation per Annotation Bidirektionale 1:1-Beziehung Kunde Agentur 0..1 public class Kunde { private int id; private public Agentur getagentur() { return agentur; } public class Agentur { private int id; private Kunde public Agentur getkunde() { return kunde; } (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 52 }

53 ORM: Beziehungsspezifikation per Annotation Unidirektionale 1:N-Beziehung Agentur public class Agentur { public class Kunde { private int id; private int id; private Collection<Kunde> kunden; public Collection<Kunde> getkunden() { return kunden; }... } (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 53

54 ORM: Beziehungsspezifikation per Annotation Bidirektionale 1:N-Beziehung Agentur 0..1 * public class Agentur { private int id; private Collection<Kunde> mappedby="agentur") public Collection<Kunde> getkunden() { return kunden; } public class Kunde { private int id; private public Agentur getagentur() { return agentur; } } (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 54

55 ORM: Beziehungsspezifikation per Annotation Bidirektionale public class Agentur { private int id; private referencedcolumnname="id"), referencedcolumnname="id") ) public Collection<Kunde> getkunden() { return kunden; }... } Agentur * public class Kunde { private int id; private Collection<Agentur> agenturen; (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 55 (mappedby=kunden) public Collection<Agentur> getagenturen() { return agenturen; } Kunde

56 ORM: Vererbungsabbildung per @DiscriminatorColumn(name="TYP", public abstrct class Kunde { private int id;... } Privatkunde public abstrct class Privatkunde extends Kunde public abstrct class Fimenkunde extends Kunde {... } (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 56

57 Persistenz: Kaskadierungspezifikation per public class Agentur { private int id; private Collection<Kunde> { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.REMOVE } mappedby="agentur") public Collection<Kunde> getkunden() { return kunden; }... } (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 57

58 Persistenz: Nachladestrategie per public class Agentur { private int id; private Collection<Kunde> CascadeType.ALL, fetchtype=fetchtype.lazy, mappedby="agentur") public Collection<Kunde> getkunden() { return kunden; }... } (c) schmiedecke 12 SE2-6-Persistenz-Frameworks 58

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

Ü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

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

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

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

Ü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

Software Engineering. 8. Persistenz

Software Engineering. 8. Persistenz Software Engineering 8. Persistenz Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung Konfigurationsmanagement

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

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

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp

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

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

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

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

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

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

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

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

Modellarbeit I: Entwurfsgerechte Klassenmodellierung

Modellarbeit I: Entwurfsgerechte Klassenmodellierung Modellarbeit I: Entwurfsgerechte Klassenmodellierung Vom Analysemodell zum Entwurfsmodell Nach der Etablierung der Techologien: Überarbeitung des Fachlichen Modells zu einem geeigneten Entwurfsmodell Navigationen

Mehr

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

Persistenz 1: Datenbanken

Persistenz 1: Datenbanken Persistenz 1: Datenbanken Modellierung: ERM und Relationales Schema Schema-Implementierung: DDL und XML SQL, ODBC und JDBC Objekt-relationales Mapping (ORM) Was ist Persistenz? Persistenz bedeutet ursprünglich,

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

Persistenz. Workplace Solutions. Persistenz. ÿ RDBMS und OO ÿ Strukturkonflikt ÿ Object-RDBMS-Mapping. Abbildung Objekte auf RDBMS

Persistenz. Workplace Solutions. Persistenz. ÿ RDBMS und OO ÿ Strukturkonflikt ÿ Object-RDBMS-Mapping. Abbildung Objekte auf RDBMS Persistenz ÿ RDBMS und OO ÿ Strukturkonflikt ÿ Object-RDBMS-Mapping APCON Abbildung Objekte auf RDBMS Der Strukturkonflikt Basisklassen und Domänen Klassen zur Kapselung der relationalen Datenbank Abbildung

Mehr

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

Java Persistenz mit JPA und Hibernate. Michael Plöd - Senacor Technologies AG Java Persistenz mit JPA und Hibernate Michael Plöd - Senacor Technologies AG Michael Plöd Partner bei Senacor Technologies AG Hibernate Erfahrung seit 2002 michael.ploed@senacor.com Ihr Hintergrund Erfahrung

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

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

Datenbankzugriff aus Eclipse Rich-Client- Anwendungen über das Internet

Datenbankzugriff aus Eclipse Rich-Client- Anwendungen über das Internet Datenbankzugriff aus Eclipse Rich-Client- Anwendungen über das Internet Johannes Michler, PROMATIS software GmbH DOAG 2010, Nürnberg, 16. November 2010 1 Gliederung Eclipse und Eclipse RCP Komponentenframework

Mehr

Programmieren II. Objekt-relationales Mapping. Vorlesung 08. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Programmieren II. Objekt-relationales Mapping. Vorlesung 08. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 39 2 / 39 Mit JDBC kann Java sich mit relationalen Datenbanken verbinden. Hierbei entsprechen jeder Datensatz einer Zeile

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

10. Datenbank Design 1

10. Datenbank Design 1 1 Die Hauptaufgabe einer Datenbank besteht darin, Daten so lange zu speichern bis diese explizit überschrieben oder gelöscht werden. Also auch über das Ende (ev. sogar der Lebenszeit) einer Applikation

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

Datenbanken Objektrelationales Mapping Spezifikation

Datenbanken Objektrelationales Mapping Spezifikation Datenbanken Objektrelationales Mapping Spezifikation Ziel: Automatische Abbildung von Java-Klassen auf relationale Datenbanktabellen Damit verbunden: Vereinfachung der Applikationsprogrammierung Insbesondere:

Mehr

Treffpunkt Semicolon. NoSQL. mit JPA und Hibernate OGM. Thomas Much 09.09.2014

Treffpunkt Semicolon. NoSQL. mit JPA und Hibernate OGM. Thomas Much 09.09.2014 Treffpunkt Semicolon NoSQL mit JPA und Hibernate OGM Thomas Much 09.09.2014 Über... Thomas Much Dipl.-Inform. (Universität Karlsruhe (TH)) Berater, Architekt, Entwickler, Coach (seit 1990) Trainer für

Mehr

Java Persistence mit Hibernate

Java Persistence mit Hibernate Christian Bauer, Gavin King Java Persistence mit Hibernate ISBN-10: 3-446-40941-6 ISBN-13: 978-3-446-40941-5 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40941-5

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

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de EJB Beispiel JEE Vorlesung 10 Ralf Gitzel ralf_gitzel@hotmail.de 1 Stundenkonzept Gemeinsame Übung Stoff der letzten Stunde wird gemeinsam in einem Beispiel umgesetzt Details werden nochmals erklärt bzw.

Mehr

EclipseLink: JPA 2.0 und noch mehr

EclipseLink: JPA 2.0 und noch mehr EclipseLink: JPA 2.0 und noch mehr Berthold Maier Chef Architekt Oracle Deutschland GmbH Michael Bräuer Systemberater Oracle Deutschland GmbH Ziele Was verbirgt sich hinter EclipseLink? Wie kann ich es

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

JDO Java Data Objects

JDO Java Data Objects JDO Java Data Objects Ralf Degner, Chief Consultant Ralf.Degner@poet.de Agenda POET Motivation Geschichte Einführung Architekturen FastObjects POET Gegründet 1993 Zwei Produktlinien esupplier Solutions:

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Java EE 6 Ein Überblick

Java EE 6 Ein Überblick Java EE 6 Ein Überblick Bernd Müller Fakultät Informatik Ostfalia Hochschule Braunschweig/Wolfenbüttel GI-Regionalgruppe Braunschweig, 16.2.2012 Bernd Müller, Fakultät Informatik, Ostfalia, 16.2.2012 1/31

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

9. Einführung in Datenbanken

9. Einführung in Datenbanken 9. Einführung in Datenbanken 9.1 Motivation und einführendes Beispiel 9.2 Modellierungskonzepte der realen Welt 9.3 Anfragesprachen (Query Languages) 9.1 Motivation und einführendes Beispiel Datenbanken

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

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

5. Übung zu Software Engineering

5. Übung zu Software Engineering 5. Übung zu Software Engineering WS 2009/2010 Henning Heitkötter Desktop-Anwendung AUFGABE 13 1 Schichtenarchitektur Strukturierung komplexer Anwendungen Anforderungen: Flexibilität, Robustheit, Wartbarkeit,

Mehr

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009 JBoss Seam Ein JEE 5 Webframework Jörg Wüthrich Infopoint, 4. Februar 2009 Inhalt Einführung Warum Seam? Zentrale Konzepte Demo Validierung Abschliessende Gedanken 04.02.2009 Infopoint - JBoss Seam - Jörg

Mehr

Enterprise Java Beans Einführung

Enterprise Java Beans Einführung Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse

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

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

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger Grundlegendes Oracle9i PostgreSQL Prevayler Memory mywms bietet umfangreiche Konfigurationsmöglichkeiten um die Daten dauerhaft zu speichern.

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

Ü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

Angewandte Softwareentwicklung Serialisierung

Angewandte Softwareentwicklung Serialisierung Angewandte Softwareentwicklung Serialisierung WS 2014/2015 Markus Berg Hochschule Wismar Fakultät für Ingenieurwissenschaften Bereich Elektrotechnik und Informatik markus.berg@hs-wismar.de http://mmberg.net

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

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

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

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

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten:

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten: Lösung Casino 1 Zunächst das Entity-Relationship-Modell: Kundenverzeichnis wird getätigt von Bestellung führt aus enthält Personal n 1 beherrscht Speisekarte Tätigkeiten Abbildung 1: Das ERM Nun zu den

Mehr

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen Java Beans Enterprise Java Beans Eine kurze Einführung in die Welt der Bohnen Java Beans Einführung Stefan Sauer Was ist ein Java Bean? Beans sind Komponenten. Einmal schreiben Überall wiederverwerten

Mehr

Factory Method (Virtual Constructor)

Factory Method (Virtual Constructor) Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte

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

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen <henning@apache.org> Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen Henning P. Schmiedehausen Turbine - ein berblick Open Source unter Apache License 100% pure Java, Java 2 (JDK 1.2+) Servlet-basiertes

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

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

Objektrelationale und erweiterbare Datenbanksysteme

Objektrelationale und erweiterbare Datenbanksysteme Objektrelationale und erweiterbare Datenbanksysteme Erweiterbarkeit SQL:1999 (Objekt-relationale Modellierung) In der Vorlesung werden nur die Folien 1-12 behandelt. Kapitel 14 1 Konzepte objekt-relationaler

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

G s e a s m a t m ar a ch c i h tek e tur u I und IoC

G s e a s m a t m ar a ch c i h tek e tur u I und IoC Gesamtarchitektur I und IoC Schichten einer Web-Anwendung Initiiert durch J2EE und Spring: Strukturierte Sicht auf UI und Fachlogik (Domäne) Ergibt 5 Schichten: Man unterscheidet Präsentations- und Domänenmodell!

Mehr

Studiengang Bachelor Wirtschaftsinformatik FWP

Studiengang Bachelor Wirtschaftsinformatik FWP HS München Fakultät 07 Studiengang Bachelor Wirtschaftsinformatik FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Die Integration von Datenbanken mittels JPA 2 Maximilian Spelsberg,

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

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

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

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

Arbeitsblätter zu Teil I des Praktikums

Arbeitsblätter zu Teil I des Praktikums Arbeitsblätter zu Teil I des Praktikums Allgemeine Hilfsmittel Bitte benutzen Sie bei Schwierigkeiten mit spezifischem Domänenwissen das Internet als Recherchemöglichkeit (beispielsweise Google oder Wikipedia).

Mehr

Persistenz. Ralf Gitzel

Persistenz. Ralf Gitzel Persistenz Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Grundkonzepte Entity Beans Meine erste Entity Entity-Manager Lernziele Übungsaufgabe 3 Grundkonzepte

Mehr

OM Datenbanken. OM Datenbanken. 8.1 Was ist ein Datenbanksystem? Motivation

OM Datenbanken. OM Datenbanken. 8.1 Was ist ein Datenbanksystem? Motivation 1 Inhalt: Relationale Datenbanken 8.1 Was ist ein Datenbanksystem? 8.2 Relationale Datenbanksysteme 8.3 Abbildung des objektorientierten Modells auf Tabellen 2 8.1 Was ist ein Datenbanksystem? Motivation

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Klassendiagramm und Datenbankableitung : Version 3 'Verleihnix 1.0'

Klassendiagramm und Datenbankableitung : Version 3 'Verleihnix 1.0' Änderungsprotokoll: Version 2 auf Version 3 (g.schabus) Änderung Datentypen von Geschlecht, Typ und Status. Da wir diese Eigenschaften nicht als Relationen sondern als Eigenschaften abbilden, hat die Geschäftslogik

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

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik

Mehr

Speicherung von XML in (objekt-)relationalen Datenbanken. Burkhard Schäfer

Speicherung von XML in (objekt-)relationalen Datenbanken. Burkhard Schäfer Speicherung von XML in (objekt-)relationalen Datenbanken Burkhard Schäfer Übersicht Motivation Anforderungen Ansätze modellorientiert strukturorientiert Zusammenfassung Motivation Warum XML in Datenbanken

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

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

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

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter SQLJ Standardisierte Java-DB DB-Schnittstelle Spezifikationen Part 0: Embedded SQL für Java (ANSI-Standard; Object Language Binding) Statische Einbettung von SQL-Anweisungen in Java-Quelltext Part 1: Java

Mehr

Dependency Injection in der Praxis: Spring, PicoContainer und Eclipse im Vergleich

Dependency Injection in der Praxis: Spring, PicoContainer und Eclipse im Vergleich Dependency Injection in der Praxis: Spring, PicoContainer und Eclipse im Vergleich Dipl.-Informatiker Martin Lippert Senior IT-Berater martin.lippert@it-agile.de http://www.it-agile.de/ Überblick Motivation

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

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

Wirtschaftsinformatik 2. Tutorium im WS 11/12

Wirtschaftsinformatik 2. Tutorium im WS 11/12 Wirtschaftsinformatik 2. Tutorium im WS 11/12 Entity/Relationship-Modell SQL Statements Tutorium Wirtschaftsinformatik WS 11/12 2.1 Datenmodellierung mit ERM (1) Datenmodellierung zur Erarbeitung des konzeptionellen

Mehr

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language) Einführung in SQL 1. Grundlagen Structured Query Language Viele Dialekte Unterteilung: i. DDL (Data Definition Language) ii. iii. DML (Data Modifing Language) DRL (Data Retrival Language) 1/12 2. DDL Data

Mehr

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

Java Connectivity mit Caché extreme (Persist & Perform ohne Umwege) Gerd Nachtsheim, Senior Sales Engineer, InterSystems

Java Connectivity mit Caché extreme (Persist & Perform ohne Umwege) Gerd Nachtsheim, Senior Sales Engineer, InterSystems Java Connectivity mit Caché extreme (Persist & Perform ohne Umwege) Gerd Nachtsheim, Senior Sales Engineer, InterSystems InterSystems Unternehmensprofil Internationales Softwareunternehmen Hauptsitz in

Mehr

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de Innovator 11 excellence DDL importieren Data-Definition-Language-Dateien in Datenbankschema importieren HowTo www.mid.de Zweck In Innovator Data excellence können Sie mit dem DDL-Import Ihr physisches

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2 Universität Osnabrück 1 3 - Objektorientierte Programmierung in Java Zur Erinnerung: Aufteilung der Schichten GUI Vorlesung 17: 3-Schichten-Architektur 2 Fachkonzept Fachkonzept - Datenhaltung Datenhaltung

Mehr

Übungen zu Softwaretechnik

Übungen zu Softwaretechnik Prof. Dr. Dr. h.c. M. Broy Lösungsblatt 11 Dr. H. Ehler, S. Wagner 23. Januar 2004 Übungen zu Softwaretechnik Aufgabe 16 Qualitätseigenschaften Broker-Pattern Beurteilen Sie das in Aufgabe 15 benutzte

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr