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! ( (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

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

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

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

Ü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

AutomatisiertePersistenz: Persistenz-Frameworks

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

Mehr

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

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

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

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

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

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

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

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Ein Ausflug zu ACCESS

Ein Ausflug zu ACCESS Ein Ausflug zu ACCESS Die folgenden Folien zeigen beispielhaft, wie man sein DB- Wissen auf ACCESS übertragen kann betrachtet wird ACCESS 2002, da gerade im Bereich der Nutzung von SQL hier einiges nachgearbeitet

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

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

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung

Mehr

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0 Anleitung zur Installation und Verwendung von eclipseuml 2.1.0 In dieser Anleitung wird die Installation und Verwendung von Omodo eclipseuml 2.1.0 beschrieben. eclipseuml ist eine Zusatzsoftware für Eclipse,

Mehr

7. Übung - Datenbanken

7. Übung - Datenbanken 7. Übung - Datenbanken Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: DBS a Was ist die Kernaufgabe von Datenbanksystemen? b Beschreiben Sie kurz die Abstraktionsebenen

Mehr

Dokumentation zum Spielserver der Software Challenge

Dokumentation zum Spielserver der Software Challenge Dokumentation zum Spielserver der Software Challenge 10.08.2011 Inhaltsverzeichnis: Programmoberfläche... 2 Ein neues Spiel erstellen... 2 Spielfeldoberfläche... 4 Spielwiederholung laden... 5 Testdurchläufe...

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

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

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

Von der Technik zum Entwurf. Prinzipien des Entwurfs Kapselung der Persistenz Referenzarchitektur Web-Anwendungen Schichtentrennung

Von der Technik zum Entwurf. Prinzipien des Entwurfs Kapselung der Persistenz Referenzarchitektur Web-Anwendungen Schichtentrennung Von der Technik zum Entwurf Prinzipien des Entwurfs Kapselung der Persistenz Referenzarchitektur Web-Anwendungen Schichtentrennung 2 1. Prinzipien des Software-Entwurfs (c) schmiedecke 12 SE2-7-SE2-7-

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

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de JSP Grundlagen JEE Vorlesung Teil 5 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht JSP Konzept Model-View-Controller mit JSPs JSP Expression Language EL Literale

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

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

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Informationen aus der Datenbank lesen Klasse SQLiteDatabase enthält die Methode query(..) 1. Parameter: Tabellenname

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

WebService in Java SE und EE

WebService in Java SE und EE Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.

Mehr

How-to: Webserver NAT. Securepoint Security System Version 2007nx

How-to: Webserver NAT. Securepoint Security System Version 2007nx Securepoint Security System Inhaltsverzeichnis Webserver NAT... 3 1 Konfiguration einer Webserver NAT... 4 1.1 Einrichten von Netzwerkobjekten... 4 1.2 Erstellen von Firewall-Regeln... 6 Seite 2 Webserver

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

HINWEISE ZUR ARBEIT IM LABOR

HINWEISE ZUR ARBEIT IM LABOR HINWEISE ZUR ARBEIT IM LABOR MIT GLASSFISH UND DERBY UNTER NETBEANS 1. Grundsätzliches: Auch weiterhin arbeiten Sie im SWE-Labor remote, d.h. auf einem Server. Ihre Entwicklungsumgebung Netbeans ist dort

Mehr

teamsync Kurzanleitung

teamsync Kurzanleitung 1 teamsync Kurzanleitung Version 4.0-19. November 2012 2 1 Einleitung Mit teamsync können Sie die Produkte teamspace und projectfacts mit Microsoft Outlook synchronisieren.laden Sie sich teamsync hier

Mehr

Updatehinweise für die Version forma 5.5.5

Updatehinweise für die Version forma 5.5.5 Updatehinweise für die Version forma 5.5.5 Seit der Version forma 5.5.0 aus 2012 gibt es nur noch eine Office-Version und keine StandAlone-Version mehr. Wenn Sie noch mit der alten Version forma 5.0.x

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

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

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Synchronisations- Assistent

Synchronisations- Assistent TimePunch Synchronisations- Assistent Benutzerhandbuch Gerhard Stephan Softwareentwicklung -und Vertrieb 25.08.2011 Dokumenten Information: Dokumenten-Name Benutzerhandbuch, Synchronisations-Assistent

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

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

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

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken Betriebliche Datenverarbeitung Wirtschaftswissenschaften AnleitungzurEinrichtungeinerODBC VerbindungzudenÜbungsdatenbanken 0.Voraussetzung Diese Anleitung beschreibt das Vorgehen für alle gängigen Windows

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

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

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

PHP Kurs Online Kurs Analysten Programmierer Web PHP

PHP Kurs Online Kurs Analysten Programmierer Web PHP PHP Kurs Online Kurs Analysten Programmierer Web PHP Akademie Domani info@akademiedomani.de Allgemeines Programm des Kurses PHP Modul 1 - Einführung und Installation PHP-Umgebung Erste Lerneinheit Introduzione

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Informatik 12 Datenbanken SQL-Einführung

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

Mehr

Ü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

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

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

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

KURZANLEITUNG CLOUD OBJECT STORAGE

KURZANLEITUNG CLOUD OBJECT STORAGE KURZANLEITUNG CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung... Seite 03 2. Anmelden am Cloud&Heat Dashboard... Seite 04 3. Anlegen eines Containers... Seite 05

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

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

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Einbindung einer ACT!12-16 Datenbank als Datenquelle für den Bulkmailer 2012

Einbindung einer ACT!12-16 Datenbank als Datenquelle für den Bulkmailer 2012 Einbindung einer ACT!12-16 Datenbank als Datenquelle für den Bulkmailer 2012 Eine langvermisste Funktion ist mit den neuesten Versionen von ACT! und Bulkmailer wieder verfügbar. Mit dem Erscheinen der

Mehr

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2 EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2

Mehr

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck

Mehr

Erstellung botoptimierter Partnerlinks

Erstellung botoptimierter Partnerlinks Erstellung botoptimierter Partnerlinks Um bestimmte Aktionen und deren Rückläufer übersichtlich tracken zu können, bietet das RedSYS Partnerprogramm in Verbindung mit den botoptimierten RedSYS-Links, die

Mehr

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH

LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH LDAP Konfiguration nach einem Update auf Version 6.3 Version 1.2 Stand: 23. Januar 2012 Copyright MATESO GmbH MATESO GmbH Daimlerstraße 7 86368 Gersthofen www.mateso.de Dieses Dokument beschreibt die Konfiguration

Mehr

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung

Mehr

Fachhochschule Deggendorf Platzziffer:...

Fachhochschule Deggendorf Platzziffer:... Sommersemester 2008 Zahl der Blätter: 9 Fachbereich: Betriebswirtschaft WI Bachelor Hilfsmittel: alles ohne Computer Zeit: 90 Minuten 1 Betrachten Sie die drei markierten Zeilen. 1. Angenommen Sie hätten

Mehr

Java Enterprise Architekturen Willkommen in der Realität

Java Enterprise Architekturen Willkommen in der Realität Java Enterprise Architekturen Willkommen in der Realität Ralf Degner (Ralf.Degner@tk-online.de), Dr. Frank Griffel (Dr.Frank.Griffel@tk-online.de) Techniker Krankenkasse Häufig werden Mehrschichtarchitekturen

Mehr

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel Sehr vielen Mitarbeitern fällt es schwer, Serienbriefe an Kunden zu verschicken, wenn sie die Serienbrieffunktion von Word nicht beherrschen. Wenn die Kunden mit Excel verwaltet werden, genügen nur ein

Mehr

XINDICE. The Apache XML Project 3.12.09. Name: J acqueline Langhorst E-Mail: blackyuriko@hotmail.de

XINDICE. The Apache XML Project 3.12.09. Name: J acqueline Langhorst E-Mail: blackyuriko@hotmail.de Name: J acqueline Langhorst E-Mail: blackyuriko@hotmail.de 3.12.09 HKInformationsverarbeitung Kurs: Datenbanken vs. MarkUp WS 09/10 Dozent: Prof. Dr. M. Thaller XINDICE The Apache XML Project Inhalt Native

Mehr

Eigene Seiten erstellen

Eigene Seiten erstellen PhPepperShop Anleitung Datum: 3. Oktober 2013 Version: 2.1 Eigene Seiten erstellen Eigene Inhalte / CMS Glarotech GmbH Inhaltsverzeichnis Anleitung zur Erstellung von eigenen Inhalten/Links...3 1. Anmeldung

Mehr

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen Stand: 13.12.2010 Die BüroWARE SoftENGINE ist ab Version 5.42.000-060 in der Lage mit einem Microsoft Exchange Server ab Version 2007 SP1

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert: Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal

Mehr

INSTALLATIONSANLEITUNG

INSTALLATIONSANLEITUNG INSTALLATIONSANLEITUNG MASTER UPDATE 2.1.0.4 2014 Gambio GmbH. www.gambio.de Inhaltsverzeichnis 1 Changelog 3 2 Datensicherung 3 3 Installation Master Update 4 3.1 Update von Shopsystemen v2.0.7c bis v2.0.15.4

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

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

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

IMAP Backup. Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails. Hersteller: malu-soft

IMAP Backup. Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails. Hersteller: malu-soft IMAP Backup Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails Hersteller: malu-soft WEB Adresse: http://www.malu-soft.de email: info@malu-soft.de support@malu-soft.de

Mehr

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen Anwendungshinweis Nr. 12 Produkt: Schlüsselworte: Problem: Softing OPC Easy Connect OPC Server, Redundanz Wie konfiguriere ich redundante Lösung: Ausgangssituation: Eine OPC Client-Anwendung ist mit mehreren

Mehr

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Autorisierung Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Dokumentation zum Referat von Matthias Warnicke und Joachim Schröder Modul: Komponenten basierte Softwareentwickelung

Mehr

Effiziente Administration Ihrer Netzwerkumgebung

Effiziente Administration Ihrer Netzwerkumgebung Admin Anwender Aufträge, Freigaben Verwaltet Benutzer, Mailboxen, Ordner und vergibt Berechtigungen Anbindung von Fremdsystemen Erzeugt und pflegt Mailboxen und Datenbanken Benutzerinformationen und Konventionen

Mehr

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte

Mehr

SJ OFFICE - Update 3.0

SJ OFFICE - Update 3.0 SJ OFFICE - Update 3.0 Das Update auf die vorherige Version 2.0 kostet netto Euro 75,00 für die erste Lizenz. Das Update für weitere Lizenzen kostet jeweils netto Euro 18,75 (25%). inkl. Programmsupport

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

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

Merchant Center und Adwords Produkterweiterung mit Filter

Merchant Center und Adwords Produkterweiterung mit Filter Letzte Aktualisierung: 02.02.2012 Merchant Center und Adwords Produkterweiterung mit Filter 1. In den USA kann man die Produkte selektieren (filtern), die zu einer Adwords- Anzeige als Produkterweiterung

Mehr