Datenbanken Objektrelationales Mapping Spezifikation

Größe: px
Ab Seite anzeigen:

Download "Datenbanken Objektrelationales Mapping Spezifikation"

Transkript

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

Oracle: Abstrakte Datentypen:

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

Mehr

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

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

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

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

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

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

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

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

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

Mehr

Java Persistence API 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

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

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

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

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 [email protected] WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

3. Stored Procedures und PL/SQL

3. Stored Procedures und PL/SQL 3. Stored Procedures und PL/SQL Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln

Mehr

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

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

Mehr

How to do? Projekte - Zeiterfassung

How to do? Projekte - Zeiterfassung How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...

Mehr

Session Beans & Servlet Integration. Ralf Gitzel [email protected]

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

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs [email protected], [email protected] 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

Mehr

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

Synchronisations- Assistent

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

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

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

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

Mehr

Eclipse und EclipseLink

Eclipse und EclipseLink Eclipse und EclipseLink Johannes Michler [email protected] PROMATIS, Ettlingen Zugriff auf Oracle Datenbanken aus Eclipse RCP Anwendungen via EclipseLink 18.09.2009 1 Gliederung Eclipse als

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

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de GEVITAS-Sync Bedienungsanleitung Stand: 26.05.2011 Copyright 2011 by GEVITAS GmbH www.gevitas.de Inhalt 1. Einleitung... 3 1.1. Installation... 3 1.2. Zugriffsrechte... 3 1.3. Starten... 4 1.4. Die Menü-Leiste...

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

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

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

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

Mehr

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

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

Mehr

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit

Mehr

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

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

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

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

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

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

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel [email protected]

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de EJB Beispiel JEE Vorlesung 10 Ralf Gitzel [email protected] 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

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

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

Mehr

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

Labor 3 - Datenbank mit MySQL

Labor 3 - Datenbank mit MySQL Labor 3 - Datenbank mit MySQL Hinweis: Dieses Labor entstand z.t. aus Scripten von Prof. Dr. U. Bannier. 1. Starten des MySQL-Systems MySQL ist ein unter www.mysql.com kostenlos erhältliches Datenbankmanagementsystem.

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

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

Unterabfragen (Subqueries)

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

Mehr

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

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

dpa-infocom - Datenlieferung

dpa-infocom - Datenlieferung dpa-infocom - Datenlieferung Copyright 2006 von dpa-infocom GmbH Status des Dokuments: FINAL Inhaltsverzeichnis Inhaltsverzeichnis...1 1. Verzeichnisstrukturen...2 2. Nachrichtenmanagement...2 3. Datenübertragung...3

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5 Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5 Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Hinweise Der Aufgabensatz

Mehr

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

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

Mehr

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

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Projektion Datenbanksysteme I π A1,...,A n (π B1,...,B

Mehr

Datenbanken & Informationssysteme Übungen Teil 1

Datenbanken & Informationssysteme Übungen Teil 1 Programmierung von Datenbankzugriffen 1. Daten lesen mit JDBC Schreiben Sie eine Java-Anwendung, die die Tabelle Books in der Datenbank azamon ausgibt. Verwenden Sie dabei die SQL-Anweisung select * from

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Datenbanken: Relationales Datenbankmodell RDM

Datenbanken: Relationales Datenbankmodell RDM Das RDM wurde in den 70'er Jahren von Codd entwickelt und ist seit Mitte der 80'er Jahre definierter Standard für Datenbanksysteme! Der Name kommt vom mathematischen Konzept einer Relation: (Sind A, B

Mehr

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007 6. Übung zur Vorlesung Datenbanken im Sommersemester 2007 mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007 Aufgabe 1: Rekursion Betrachten Sie die folgende Tabelle

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

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

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

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

Mehr

Unsere Webapplikation erweitern

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

Mehr

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

Java Persistence API. Phillip Ghadir Oliver Tigges

Java Persistence API. Phillip Ghadir Oliver Tigges Phillip Ghadir [email protected] Oliver Tigges [email protected] Was wissen Sie in 45 Minuten? Wie man mit JPA entwickelt. Dass wir viele Eigenschaften von JPA ausgelassen haben. Dass Sie nicht

Mehr

MWF-Bore-Admin Version 1.0.7

MWF-Bore-Admin Version 1.0.7 MWF-Bore-Admin Das Programm zur Verwaltung der MWF MySQL-Datenbank Version 1.0.7 E n g i n e e r i n g f ü r d i e W e l t v o n m o r g e n. Inhaltsverzeichnis 1 Vorwort...3 2 Der Startbildschirm...3

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

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

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

Mehr

Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer

Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer Daten-Synchronisation zwischen Mozilla Thunderbird (Lightning) / Mozilla Sunbird und dem ZDV Webmailer Zentrum für Datenverarbeitung der Universität Tübingen Inhaltsverzeichnis 1.Synchronisation...aber

Mehr

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Ab der Version forma 5.5 handelt es sich bei den Orientierungshilfen der Architekten-/Objektplanerverträge nicht

Mehr

Eine Anwendung mit InstantRails 1.7

Eine Anwendung mit InstantRails 1.7 Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen

Mehr

FlowFact Alle Versionen

FlowFact Alle Versionen Training FlowFact Alle Versionen Stand: 29.09.2005 Rechnung schreiben Einführung Wie Sie inzwischen wissen, können die unterschiedlichsten Daten über verknüpfte Fenster miteinander verbunden werden. Für

Mehr

Durchführung der Datenübernahme nach Reisekosten 2011

Durchführung der Datenübernahme nach Reisekosten 2011 Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,

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

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

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

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

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

Mehr

SQL - Übungen Bearbeitung der Datenbank Personal (1)

SQL - Übungen Bearbeitung der Datenbank Personal (1) Bearbeitung der Datenbank Personal (1) 1. Abfragen einer einzigen Tabelle 1.1. Zeigen Sie alle Informationen an, die über die Kinder der Mitarbeiter gespeichert sind. 1.2. Zeigen Sie aus der Tabelle stelle

Mehr

105.3 SQL-Datenverwaltung

105.3 SQL-Datenverwaltung LPI-Zertifizierung 105.3 SQL-Datenverwaltung Copyright ( ) 2009 by Dr. W. Kicherer. This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.0 Germany License. To view a

Mehr

Beispiel 1: Filmdatenbank

Beispiel 1: Filmdatenbank Beispiel 1: Filmdatenbank Die Filmdatenbank hat drei Tabellen (ACTOR, MOVIE, PLAYED) Aufgabe 1: Erstelle mit Hilfe der SQL-DDL die drei Tabellen und die Datenbank (MOVIEDB) ACTOR (ActorID, Name, Birthday,

Mehr

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme 8. Übung zur Vorlesung Datenbanksysteme WS 08/09 Musterlösung Aufgabe 8-1: SQLJ //

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: [email protected] [email protected]

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: [email protected] Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

Adminer: Installationsanleitung

Adminer: Installationsanleitung Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann

Mehr

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen: FRAGEBOGEN-AUFGABE Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen: Ein Fragebogen besteht aus mehreren Fragen, eine Frage kann in mehreren Fragebögen

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

Whitepaper. Produkt: address manager 2003. Outlook AddIn für den address manager email Zuordnung. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: address manager 2003. Outlook AddIn für den address manager email Zuordnung. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: address manager 2003 Outlook AddIn für den address manager email Zuordnung Outlook AddIn für den address manager email Zuordnung - 2 - Inhalt

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

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline Öffentliche Ordner Offline INDEX Öffentliche Ordner erstellen Seite 2 Offline verfügbar einrichten Seite 3 Berechtigungen setzen Seite 7 Erstelldatum 12.08.05 Version 1.1 Öffentliche Ordner Im Microsoft

Mehr

10.6 Programmier-Exits für Workitems

10.6 Programmier-Exits für Workitems 10.6 Programmier-Exits für Workitems 279 10.6 Programmier-Exits für Workitems 10.6.1 Das Interface IF_SWF_IFS_WORKITEM_EXIT Am Schritt einer Workflow-Definition im Reiter»Programmier-Exits«können verschiedene

Mehr

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695 Database Exchange Manager Replication Service- schematische Darstellung Replication Service- allgemeines Replikation von Daten von bzw. in ein SAP-System und einer relationalen DMS-Datenbank Kombination

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Physiotherapiepraxis-Lastenheft

Physiotherapiepraxis-Lastenheft Physiotherapiepraxis-Lastenheft Inhaltsverzeichnis 1 Zielbestimmung... 2 2 Produkteinsatz... 3 3 Produktfunktionen... 4 4 Produktdaten... 7 5 Produktleistungen... 9 6 Ergänzungen... 10 1 Zielbestimmung

Mehr

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt. Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten

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