Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011"

Transkript

1 Programmieren II Martin Schultheiß Hochschule Darmstadt Sommersemester 2011

2 1 Objekt-relationales Mapping 2

3 Objekt-relationales Mapping Mit JDBC kann Java sich mit relationalen Datenbanken verbinden.

4 Objekt-relationales Mapping Mit JDBC kann Java sich mit relationalen Datenbanken verbinden. Hierbei entsprechen jeder Datensatz einer Zeile in einer Datenbanktabelle und

5 Objekt-relationales Mapping Mit JDBC kann Java sich mit relationalen Datenbanken verbinden. Hierbei entsprechen jeder Datensatz einer Zeile in einer Datenbanktabelle und die Attribute eines Datensatzes den Tabellenspalten.

6 Objekt-relationales Mapping Mit JDBC kann Java sich mit relationalen Datenbanken verbinden. Hierbei entsprechen jeder Datensatz einer Zeile in einer Datenbanktabelle und die Attribute eines Datensatzes den Tabellenspalten.

7 Objekt-relationales Mapping Mit JDBC kann Java sich mit relationalen Datenbanken verbinden. Hierbei entsprechen jeder Datensatz einer Zeile in einer Datenbanktabelle und die Attribute eines Datensatzes den Tabellenspalten. Daher ist es prinzipiell möglich, eine Abbildung zwischen den Datensätzen in einer Tabelle und klassischen Java-Objekten (POJO plain old Java objects) herzustellen.

8 Objekt-relationales Mapping Mit JDBC kann Java sich mit relationalen Datenbanken verbinden. Hierbei entsprechen jeder Datensatz einer Zeile in einer Datenbanktabelle und die Attribute eines Datensatzes den Tabellenspalten. Daher ist es prinzipiell möglich, eine Abbildung zwischen den Datensätzen in einer Tabelle und klassischen Java-Objekten (POJO plain old Java objects) herzustellen. Eine solche Abbildung nennt man objekt-relationales Mapping (ORM).

9 Beispieltabelle: Customer Die folgende Tabelle beschreibt einen Kunden mit Adresse, wobei die ID des Kunden automatisch generiert wird (entsprechend des SQL-Dialektes für HSQLDB): CREATE TABLE CUSTOMER( ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY, FIRSTNAME VARCHAR( 2 0 ), LASTNAME VARCHAR( 2 0 ), STREET VARCHAR( 2 0 ), CITY VARCHAR(20) )

10 Korrespondierende Klasse Customer p u b l i c c l a s s Customer { p r i v a t e I n t e g e r id ; p r i v a t e S t r i n g f i r s t n a m e ; p r i v a t e S t r i n g lastname ; p r i v a t e S t r i n g s t r e e t ; p r i v a t e S t r i n g c i t y ; p u b l i c I n t e g e r getid ( ) { return id ; p u b l i c void s e t I d ( I n t e g e r id ) { t h i s. id = id ;

11 Korrespondierende Klasse Customer (Forts.) p u b l i c S t r i n g getfirstname ( ) { return f i r s t n a m e ; p u b l i c void setfirstname ( S t r i n g f i r s t n a m e ) { t h i s. f i r s t n a m e = f i r s t n a m e ; // Weitere Getter und S e t t e r p u b l i c S t r i n g t o S t r i n g ( ) { return S t r i n g. format ( "%s %s, %s, %s ", firstname, lastname, s t r e e t, c i t y ) ;

12 Klasse DBConnection Das Laden des JDBC-Treibers und der Aufbau der Verbindung wird in eine eigene Klasse ausgelagert: p u b l i c c l a s s DBManager { p r i v a t e Connection conn ; p u b l i c DBManager ( ) { try { Class. forname ( " org. hsqldb. jdbcdriver " ) ; conn = DriverManager. getconnection ( " jdbc : hsqldb : f i l e : data / f i b u ; shutdown=true ", "SA", "" ) ; catch ( Exception e ) { e. printstacktrace ( ) ;

13 Klasse DBConnection (Forts.) p u b l i c void c l o s e ( ) { i f ( conn!= n u l l ) { try { conn. c l o s e ( ) ; catch ( SQLException e ) { e. printstacktrace ( ) ; f i n a l l y { conn = n u l l ;

14 Verknüpfung DB-Tabelle Java-Objekt Nun sollen Java-Objekte persistent gemacht werden, indem Objekte vom Typ Customer mit der gleichnamigen DB-Tabelle synchronisiert werden können.

15 Verknüpfung DB-Tabelle Java-Objekt Nun sollen Java-Objekte persistent gemacht werden, indem Objekte vom Typ Customer mit der gleichnamigen DB-Tabelle synchronisiert werden können. Hierzu werden der Klasse DBManager zwei neue Methoden hinzugefügt: Customer load(integer id) Hier werden für eine ID die Werte der Attribute per SELECT aus der Tabelle geholt und eine neue Instanz von Customer erzeugt. void persist(customer c) Hier werden die Werte der Attribute von c in die Tabelle geschrieben, wobei bei leerer ID (null) ein neuer Datensatz per INSERT eingefügt, andernfalls die Feldwerte des existierenden Datensatzes per UPDATE aktualisiert werden.

16 Methode load von DBManager p u b l i c Customer load ( I n t e g e r i d ) { Customer c = n u l l ; t r y { PreparedStatement s t = conn. preparestatement ( " s e l e c t * from CUSTOMER where i d=?" ) ; s t. s e t I n t ( 1, i d ) ; R e s u l t S e t r e s = s t. executequery ( ) ; i f ( r e s. next ( ) ) { c = new Customer ( ) ; c. s e t I d ( r e s. g e t I n t ( "ID" ) ) ; c. s e t F i r s t n a m e ( r e s. g e t S t r i n g ( "FIRSTNAME" ) ) ; c. setlastname ( r e s. g e t S t r i n g ( "LASTNAME" ) ) ; c. s e t S t r e e t ( r e s. g e t S t r i n g ( "STREET" ) ) ; c. s e t C i t y ( r e s. g e t S t r i n g ( "CITY" ) ) ; r e s. c l o s e ( ) ; catch ( SQLException e ) { e. p r i n t S t a c k T r a c e ( ) ; r e t u r n c ;

17 Methode persist von DBManager p u b l i c void p e r s i s t ( Customer c ) { PreparedStatement s t ; t r y { i f ( c. g e t I d ()== n u l l ) { s t = conn. preparestatement ( " i n s e r t i n t o CUSTOMER"+ " (FIRSTNAME,LASTNAME,STREET, CITY) v a l u e s (?,?,?,? ) e l s e { s t = conn. preparestatement ( " update CUSTOMER s e t "+ "FIRSTNAME=?, LASTNAME=?, STREET=?, CITY=? where i s t. s e t I n t ( 5, c. g e t I d ( ) ) ; s t. s e t S t r i n g ( 1, c. getfirstname ( ) ) ; s t. s e t S t r i n g ( 2, c. getlastname ( ) ) ; s t. s e t S t r i n g ( 3, c. g e t S t r e e t ( ) ) ; s t. s e t S t r i n g ( 4, c. g e t C i t y ( ) ) ; s t. executeupdate ( ) ;

18 Methode persist von DBManager (Forts.) i f ( c. g e t I d ()== n u l l ) { s t = conn. preparestatement ( " c a l l i d e n t i t y ( ) " ) ; R e s u l t S e t r e s = s t. executequery ( ) ; r e s. next ( ) ; c. s e t I d ( new I n t e g e r ( r e s. g e t I n t ( 1 ) ) ) ; r e s. c l o s e ( ) ; catch ( SQLException e ) { e. p r i n t S t a c k T r a c e ( ) ;

19 Exkurs: PreparedStatement In der Realisierung von fetch () und update() wurde statt Statement jeweils PreparedStatement benutzt.

20 Exkurs: PreparedStatement In der Realisierung von fetch () und update() wurde statt Statement jeweils PreparedStatement benutzt. Bei PreparedStatement wird beim Anlegen das Statement bereits mit einem SQL-Befehl (i. A. mit Platzhaltern) vorbereitet. Dieser wird von der Datenbank vorkompiliert. Danach können die Platzhalter mit den realen Werte belegt werden.

21 Exkurs: PreparedStatement In der Realisierung von fetch () und update() wurde statt Statement jeweils PreparedStatement benutzt. Bei PreparedStatement wird beim Anlegen das Statement bereits mit einem SQL-Befehl (i. A. mit Platzhaltern) vorbereitet. Dieser wird von der Datenbank vorkompiliert. Danach können die Platzhalter mit den realen Werte belegt werden. Vorteile: Bei mehrfacher Verwendung (z. B. in Schleifen) ergibt sich ein Laufzeitgewinn, da der Befehl schon vorkompiliert ist. Da die Gültigkeit der Parameter überprüft wird und SQL-Sonderzeichen (z. B. ') geschützt werden, werden so genannte SQL-Injections verhindert.

22 Kleiner Cartoon Quelle:

23 Zusammenfassung In diesem Abschnitt wurde anhand einer einfachen Tabelle demonstriert, wie ein objekt-relationales Mapping selber realisiert werden kann.

24 Zusammenfassung In diesem Abschnitt wurde anhand einer einfachen Tabelle demonstriert, wie ein objekt-relationales Mapping selber realisiert werden kann. Der Aufwand war aber recht hoch, da individuell für die Klasse die entsprechenden Methoden zur Synchronisation inkl. der entsprechenden SQL-Befehle implementiert wurden. Wegen verschiedener SQL-Dialekte der RDBMS ist die Implementierung auch DB-spezifisch.

25 Zusammenfassung In diesem Abschnitt wurde anhand einer einfachen Tabelle demonstriert, wie ein objekt-relationales Mapping selber realisiert werden kann. Der Aufwand war aber recht hoch, da individuell für die Klasse die entsprechenden Methoden zur Synchronisation inkl. der entsprechenden SQL-Befehle implementiert wurden. Wegen verschiedener SQL-Dialekte der RDBMS ist die Implementierung auch DB-spezifisch. Der Aufwand wird noch höher, wenn Tabellen über Schlüssel miteinander verknüpft sind.

26 Zusammenfassung In diesem Abschnitt wurde anhand einer einfachen Tabelle demonstriert, wie ein objekt-relationales Mapping selber realisiert werden kann. Der Aufwand war aber recht hoch, da individuell für die Klasse die entsprechenden Methoden zur Synchronisation inkl. der entsprechenden SQL-Befehle implementiert wurden. Wegen verschiedener SQL-Dialekte der RDBMS ist die Implementierung auch DB-spezifisch. Der Aufwand wird noch höher, wenn Tabellen über Schlüssel miteinander verknüpft sind. Daher werden in der Praxis für ORM spezielle Frameworks benutzt.

27 Hibernate Es existieren verschiedene Frameworks, die ein objekt-relationales Mapping realisieren, mittlerweile standadisiert über die Java Persistence API JPA.

28 Hibernate Es existieren verschiedene Frameworks, die ein objekt-relationales Mapping realisieren, mittlerweile standadisiert über die Java Persistence API JPA. Eines der bekanntesten und häufig benutzten ist Hibernate (

29 Hibernate Es existieren verschiedene Frameworks, die ein objekt-relationales Mapping realisieren, mittlerweile standadisiert über die Java Persistence API JPA. Eines der bekanntesten und häufig benutzten ist Hibernate ( Was ist der Vorteil eines solchen Frameworks und ORM?

30 Hibernate Es existieren verschiedene Frameworks, die ein objekt-relationales Mapping realisieren, mittlerweile standadisiert über die Java Persistence API JPA. Eines der bekanntesten und häufig benutzten ist Hibernate ( Was ist der Vorteil eines solchen Frameworks und ORM? Es verbindet die Vorteile der objektorientierten Programmierung mit den Vorteilen einer Datenbank, insbesondere der Persistenz (d. h. dass Datensätze in einem RDBMS nicht flüchtig sind). So kann man persistente Objekte realisieren, die sich weitgehend wie normale Java-Objekte verwenden lassen.

31 Geschichte Hibernate wurde von der Firma JBoss entwickelt, die sich mit Open-Source-Software im Bereich Java-Middleware, -Applikationsservern und Message-Brokern beschäftigt.

32 Geschichte Hibernate wurde von der Firma JBoss entwickelt, die sich mit Open-Source-Software im Bereich Java-Middleware, -Applikationsservern und Message-Brokern beschäftigt. Mittlerweile wurde JBoss von RedHat übernommen.

33 Architektur Hibernate stellt in der einfachsten Benutzungsform dem Anwender eine Datenbank-Session zur Verfügung, die nach Konfiguration eines Datenbanktyps und der Datenbankparameter geöffnet wird.

34 Architektur Hibernate stellt in der einfachsten Benutzungsform dem Anwender eine Datenbank-Session zur Verfügung, die nach Konfiguration eines Datenbanktyps und der Datenbankparameter geöffnet wird. Objekte können sich in drei Zuständen befinden: transient Das Objekt ist noch nicht mit der Datenbank verknüpft, also flüchtig.

35 Architektur Hibernate stellt in der einfachsten Benutzungsform dem Anwender eine Datenbank-Session zur Verfügung, die nach Konfiguration eines Datenbanktyps und der Datenbankparameter geöffnet wird. Objekte können sich in drei Zuständen befinden: transient Das Objekt ist noch nicht mit der Datenbank verknüpft, also flüchtig. persistent Das Objekt ist im aktuellen Kontext mit der Datenbank verknüpft.

36 Architektur Hibernate stellt in der einfachsten Benutzungsform dem Anwender eine Datenbank-Session zur Verfügung, die nach Konfiguration eines Datenbanktyps und der Datenbankparameter geöffnet wird. Objekte können sich in drei Zuständen befinden: transient Das Objekt ist noch nicht mit der Datenbank verknüpft, also flüchtig. persistent Das Objekt ist im aktuellen Kontext mit der Datenbank verknüpft. detached Das Objekt war mit der Datenbank verknüpft, der Kontext existiert aber nicht mehr. Daher ist das Objekt aktuell losgelöst.

37 Schaubild

38 Konfiguration einer Hibernate-Anwendung In der Java-SE verwendet man i. A. mit Hibernate einen Entity-Manager, der aus einer so genannten Persistence Unit erzeugt wird.

39 Konfiguration einer Hibernate-Anwendung In der Java-SE verwendet man i. A. mit Hibernate einen Entity-Manager, der aus einer so genannten Persistence Unit erzeugt wird. Hierbei erfolgt die Konfiguration der Persistence Unit in der Datei META-INF/persistence.xml: <?xml version=" 1. 0 " encoding=" utf - 8 "?> <p e r s i s t e n c e xmlns=" h t t p : // java. sun. com/xml/ ns / p e r s i s t e n c e " xmlns: xsi=" http: //www. w3. org /2001/XMLSchema- instance " x s i : s c h e m a L o c a t i o n=" h t t p : // java. sun. com/xml/ ns / p e r s i s t e n c e h t t p : // j a va. sun v e r s i o n=" 2. 0 "> <p e r s i s t e n c e - u n i t name=" manager1 " t r a n s a c t i o n - type="resource_local"> <p r o p e r t i e s> <p r o p e r t y name=" javax. p e r s i s t e n c e. jdbc. d r i v e r " v a l u e=" org. hsqldb. j d b c D <p r o p e r t y name=" javax. p e r s i s t e n c e. jdbc. u s e r " v a l u e=" sa "/> <p r o p e r t y name=" javax. p e r s i s t e n c e. jdbc. password " v a l u e=""/> <p r o p e r t y name=" javax. p e r s i s t e n c e. jdbc. u r l " v a l u e=" j d b c : h s q l d b : f i l e : d a t <p r o p e r t y name=" h i b e r n a t e. d i a l e c t " v a l u e=" org. h i b e r n a t e. d i a l e c t. HSQLD <property name=" hibernate. max_fetch_depth" value="3"/> </ p r o p e r t i e s> </ p e r s i s t e n c e - u n i t> </ p e r s i s t e n c e>

40 Anlegen des Entity-Managers import javax. p e r s i s t e n c e. * ; p u b l i c c l a s s Anwendung { p u b l i c s t a t i c void main ( S t r i n g [ ] args ) { EntityManagerFactory emf = P e r s i s t e n c e. createentitymanagerfactory ( "manager1" ) ; EntityManager em = emf. createentitymanager ( ) ; // Arbeiten mit p e r s i s t e n t e n Objekten em. c l o s e ( ) ; emf. c l o s e ( ) ;

41 Grundlagen von ORM Durch ORM werden Klassen mit Tabellen und Instanzen der Klassen mit Datensätzen innerhalb der Tabelle verknüpft.

42 Grundlagen von ORM Durch ORM werden Klassen mit Tabellen und Instanzen der Klassen mit Datensätzen innerhalb der Tabelle verknüpft. Damit Instanzen eindeutig Datensätzen zugeordnet werden können, muss die Datenbanktabelle einen eindeutigen Primärschlüssel besitzen. Dieser wird dann als WHERE-Ausdruck in den abgesetzten SQL-Anweisungen verwendet.

43 Grundlagen von ORM Durch ORM werden Klassen mit Tabellen und Instanzen der Klassen mit Datensätzen innerhalb der Tabelle verknüpft. Damit Instanzen eindeutig Datensätzen zugeordnet werden können, muss die Datenbanktabelle einen eindeutigen Primärschlüssel besitzen. Dieser wird dann als WHERE-Ausdruck in den abgesetzten SQL-Anweisungen verwendet. Weiterhin dient die Existenz einer Primär-ID im Objekt der Unterscheidung, ob ein nicht persistentes Objekt transient oder detached ist.

44 Faustregeln Im Allgemeinen wird eine Tabelle der Datenbank einer Java-Klasse zugeordnet.

45 Faustregeln Im Allgemeinen wird eine Tabelle der Datenbank einer Java-Klasse zugeordnet. Diese Klasse muss einen Standardkonstruktor besitzen.

46 Faustregeln Im Allgemeinen wird eine Tabelle der Datenbank einer Java-Klasse zugeordnet. Diese Klasse muss einen Standardkonstruktor besitzen. Die Attribute der Tabelle werden auf entsprechende Attribute der Klasse abgebildet.

47 Faustregeln Im Allgemeinen wird eine Tabelle der Datenbank einer Java-Klasse zugeordnet. Diese Klasse muss einen Standardkonstruktor besitzen. Die Attribute der Tabelle werden auf entsprechende Attribute der Klasse abgebildet. In der Klasse werden dann Getter und Setter für diese Attribute definiert.

48 Faustregeln Im Allgemeinen wird eine Tabelle der Datenbank einer Java-Klasse zugeordnet. Diese Klasse muss einen Standardkonstruktor besitzen. Die Attribute der Tabelle werden auf entsprechende Attribute der Klasse abgebildet. In der Klasse werden dann Getter und Setter für diese Attribute definiert. Durch Annotationen können besondere Zuordnungen (Primärschlüssel, Abbildungen n:m, unterschiedlicher Name von Attribut und Tabellenspalte) definiert werden.

49 Beispiel: Datenbank Fibu Hier nun ein Datenbankschema für eine Buchhaltung: Invoice ID : INTEGER CUSTOMERID : INTEGER TOTAL : DECIMAL(10,2) Customer ID : INTEGER FIRSTNAME : VARCHAR(20) LASTNAME : VARCHAR(20) Item ITEM : INTEGER INVOICEID : INTEGER PRODUCTID : INTEGER QUANTITY : INTEGER COST : DECIMAL(10,2) PRODUCT ID : INTEGER NAME : VARCHAR(20) PRICE : DECIMAL(10,2)

50 Erster Ansatz: Klasse Invoice import javax. p e r s i s t e n c e. * p u b l i c c l a s s I n v o i c e { p r i v a t e I n t e g e r id ; p r i v a t e I n t e g e r customerid ; p r i v a t e Double t o t a ( s t r a t e g y=generationtype.auto) p u b l i c I n t e g e r getid ( ) { return id ; p u b l i c void s e t I d ( I n t e g e r id ) { t h i s. id = id ;

51 Erster Ansatz: Klasse Invoice (Forts.) p u b l i c I n t e g e r getcustomerid ( ) { return customerid ; p u b l i c void setcustomerid ( I n t e g e r customerid ) { t h i s. customerid = customerid ; p u b l i c Double gettotal ( ) { return t o t a l ; p u b l i c void s e t T o t a l ( Double t o t a l ) { t h i s. t o t a l = t o t a l ;

52 Mapping Während in Hibernate das ORM ursprünglich über XML-Dateien erfolgte, geht dies nun über Annotationen: Die Klasse Invoice wird über Annotation als Entität gekennzeichnet, wobei per Default angenommen wird, dass die Datenbanktabelle den selben Namen hat.

53 Mapping Während in Hibernate das ORM ursprünglich über XML-Dateien erfolgte, geht dies nun über Annotationen: Die Klasse Invoice wird über Annotation als Entität gekennzeichnet, wobei per Default angenommen wird, dass die Datenbanktabelle den selben Namen hat. Dann wird das Attribut id der Java-Klasse als Primärschlüssel markiert.

54 Mapping Während in Hibernate das ORM ursprünglich über XML-Dateien erfolgte, geht dies nun über Annotationen: Die Klasse Invoice wird über Annotation als Entität gekennzeichnet, wobei per Default angenommen wird, dass die Datenbanktabelle den selben Namen hat. Dann wird das Attribut id der Java-Klasse als Primärschlüssel markiert. Alle weiteren Attribute der Klasse werden automatisch auf die Datenbankspalte gleichen Namens abgebildet.

55 Zweiter Ansatz für Invoice In Wirklichkeit möchte man in der Klasse Invoice statt der reinen Kundennr. lieber direkt eine Referenz auf den Kunden p u b l i c c l a s s I n v o i c e {... p r i v a t e Customer ( name="customerid" ) p u b l i c Customer getcustomer ( ) { return customer ; p u b l i c void setcustomer ( Customer customer ) { t h i s. customer = customer ;

56 Mapping Dies ist ein Fall einer Zuordnung many-to-one: Mehrere Rechnungen können für denselben Kunden ausgestellt sein.

57 Mapping Dies ist ein Fall einer Zuordnung many-to-one: Mehrere Rechnungen können für denselben Kunden ausgestellt sein. Diese Abbildung erfolgt über die wobei der Name der Tabellenspalte mit dem Fremdschlüssel angegeben werden muss, wenn diese Spalte nicht einfach FKTAB_ID heißt, wobei FKTAB der Name der verknüpften Tabelle ist. Die Klasse Customer muss natürlich auch entsprechend mit Annotationen für JPA versehen sein.

58 Mapping der Rechnungspositionen Einer Rechnung sind in der Regel viele Rechnungsposten zugeordnet. Die Zuordnung erfolgt durch die Spalte invoiceid in der Tabelle Item.

59 Mapping der Rechnungspositionen Einer Rechnung sind in der Regel viele Rechnungsposten zugeordnet. Die Zuordnung erfolgt durch die Spalte invoiceid in der Tabelle Item. Hierfür wird in der Klasse Invoice nun eine Collection von Item neu hinzugefügt, die eine Abbildung vom Typ one-to-many ist. Hierbei wird für die Zuordnung die Spalte invoiceid aus Item als foreign key verwendet, anhand dessen die passenden Rechnungsposten ausgewählt werden.

60 Mapping der Rechnungspositionen Einer Rechnung sind in der Regel viele Rechnungsposten zugeordnet. Die Zuordnung erfolgt durch die Spalte invoiceid in der Tabelle Item. Hierfür wird in der Klasse Invoice nun eine Collection von Item neu hinzugefügt, die eine Abbildung vom Typ one-to-many ist. Hierbei wird für die Zuordnung die Spalte invoiceid aus Item als foreign key verwendet, anhand dessen die passenden Rechnungsposten ausgewählt werden. Zusätzlich wird direkt die Tabelle Product anhand der Produktnr. des Rechnungsposten in die Klasse Item abgebildet.

61 Klasse p u b l i c c l a s s I n v o i c e { p r i v a t e C o l l e c t i o n <Item> items i n v o i c e " ) p u b l i c C o l l e c t i o n <Item> getitems ( ) { return items ; p u b l i c void s etitems ( C o l l e c t i o n <Item> items ) { t h i s. items = items ;

62 Klasse p u b l i c c l a s s Item { p r i v a t e I n t e g e r id ; p r i v a t e I n v o i c e i n v o i c e ; p r i v a t e Product product ; p r i v a t e I n t e g e r name="item" ( s t r a t e g y=generationtype.auto) p u b l i c I n t e g e r getid ( ) { return id ; p u b l i c void s e t I d ( I n t e g e r id ) { t h i s. id = id ;

63 Klasse ( name="invoiceid" ) p u b l i c I n v o i c e g e t I n v o i c e ( ) { return i n v o i c e ; p u b l i c void s e t I n v o i c e ( I n v o i c e i n v o i c e ) { t h i s. i n v o i c e = i n v o i c ( name="productid" ) p u b l i c Product getproduct ( ) { return product ; p u b l i c void setproduct ( Product product ) { t h i s. product = product ;

64 Klasse Item (Forts.) p u b l i c I n t e g e r getquantity ( ) { return quantity ; p u b l i c void setquantity ( I n t e g e r quantity ) { t h i s. quantity = quantity ;

65 Klasse p u b l i c c l a s s Product { p r i v a t e I n t e g e r id ; p r i v a t e S t r i n g name ; p r i v a t e Double p r i c e p u b l i c I n t e g e r getid ( ) { return id ; p u b l i c void s e t I d ( I n t e g e r id ) { t h i s. id = id ;

66 Klasse Product (Forts.) p u b l i c S t r i n g getname ( ) { return name ; p u b l i c void setname ( S t r i n g name) { t h i s. name = name ; p u b l i c Double g e t P r i c e ( ) { return p r i c e ; p u b l i c void s e t P r i c e ( Double p r i c e ) { t h i s. p r i c e = p r i c e ;

67 Anwendung p u b l i c c l a s s Anwendung { p u b l i c s t a t i c void main ( S t r i n g [ ] args ) { EntityManagerFactory emf = P e r s i s t e n c e. createentitymanagerfactory ( "manager1" ) ; EntityManager em = emf. createentitymanager ( ) ; EntityTransaction tx = em. gettransaction ( ) ; tx. begin ( ) ; Customer c = em. f i n d ( Customer. c l a s s, new I n t e g e r ( 5 ) ) ; System. out. p r i n t l n ( c ) ; c. s e t C i t y ( " Frankfurt " ) ; tx. commit ( ) ;

68 Anwendung (Forts.) tx. begin ( ) ; c = new Customer ( ) ; c. setfirstname ( " Karl " ) ; c. setlastname ( " Meier " ) ; c. s e t S t r e e t ( "Ahornweg" ) ; c. s e t C i t y ( "Köln" ) ; em. p e r s i s t ( c ) ; tx. commit ( ) ; System. out. p r i n t l n ( c. getid ( ) ) ;

69 Anwendung (Forts.) I n v o i c e inv = em. f i n d ( I n v o i c e. c l a s s, new I n t e g e r ( 2 ) ) ; System. out. p r i n t l n ( inv. getcustomer ( ) ) ; f o r ( Item item : inv. getitems ( ) ) { System. out. format ( "%d mal %s \n", item. getquantity ( ), item. getproduct ( ). getname ( ) ) ; em. c l o s e ( ) ; emf. c l o s e ( ) ;

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

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

Mehr

Programmieren II. Objekt-relationales Mapping. Vorlesung 12. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009

Programmieren II. Objekt-relationales Mapping. Vorlesung 12. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2009 1 / 35 2 / 35 Mit JDBC kann Java sich mit relationalen Datenbanken verbinden. Hierbei entsprechen jeder Datensatz einer Zeile

Mehr

Programmieren II. Objekt-relationales Mapping. Hibernate. Hibernate. Dr. Klaus Höppner. Hochschule Darmstadt SS 2008

Programmieren II. Objekt-relationales Mapping. Hibernate. Hibernate. Dr. Klaus Höppner. Hochschule Darmstadt SS 2008 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt SS 2008 1 / 26 2 / 26 Objekt-relationales Mapping Mit JDBC kann Java sich mit relationalen Datenbanken verbinden. Hierbei entsprechen jeder Datensatz

Mehr

Eclipse und EclipseLink

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

Mehr

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

4. Objektrelationales Mapping Grundlagen der Programmierung II (Java)

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

Mehr

Ü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

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

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

Mehr

Gregor Raschke 2008 HIBERNATE. Eine Einführung

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

Mehr

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

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

Mehr

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

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

Mehr

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

Datenbank und Informationssysteme

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

Mehr

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

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008 Programmieren II Datenbanken Dr. Klaus Höppner SQL Hochschule Darmstadt SS 2008 JDBC 1 / 20 2 / 20 Relationale Datenbanken Beispiele für RDBMS Ein Datenbanksystem ist ein System zur Speicherung von (großen)

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

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

3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java)

3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java) 3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

Mehr

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

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

Mehr

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

Mehr

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen Datenbankentwurf & Datenbankzugriff mit JDBC Georg Köster Sven Wagner-Boysen 6. November 2007 Gliederung 2 Datenbankentwurf für ProminentPeople.info ER-Modell Relationaler Entwurf Normalisierung Datenbankzugriff

Mehr

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

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

Mehr

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

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

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

Mehr

Einführung in die Informatik II

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

Mehr

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

Datenbanksysteme I Datenbankprogrammierung. 15.6.2009 Felix Naumann

Datenbanksysteme I Datenbankprogrammierung. 15.6.2009 Felix Naumann Datenbanksysteme I Datenbankprogrammierung 15.6.2009 Felix Naumann SQL mit einer Programmiersprache verbinden 2 Embedded SQL Kombiniert SQL mit 7 Programmiersprachen ADA, C, Cobol, Fortran, M, Pascal,

Mehr

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

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

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2014/2015 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 20. November 2015 Betriebssysteme / verteilte

Mehr

Java Database Connectivity-API (JDBC)

Java Database Connectivity-API (JDBC) Java Database Connectivity-API (JDBC) Motivation Design Grundlagen Typen Metadaten Transaktionen Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Motivation Problem: Zugriff auf ein DBMS ist herstellerabhängig

Mehr

ibatis SQL Maps Einführung

ibatis SQL Maps Einführung ibatis SQL Maps Einführung für SQL Maps Version 2.0 Oktober 27, 2007 Übersetzung Axel Leucht (Axel.Leucht@gmx.net) Einführung Dieses Handbuch gibt ihnen eine Einführung des typischen Einsatzes von SQL

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

Informationsintegration und Web-Portale. Tutorial: Enterprise Java Beans. Erik Buchmann

Informationsintegration und Web-Portale. Tutorial: Enterprise Java Beans. Erik Buchmann Universität Karlsruhe (TH) Informationsintegration und Portale Tutorial: Enterprise Java Erik Buchmann buchmann@ira.uka.de IPD, Forschungsbereich Systeme der Informationsverwaltung Benötigte Software Entity

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

Mehr

Object Relational Mapping Layer

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

Mehr

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

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

Mehr

Kapitel 8: Datenbankanbindung. SoPra 2008 Kap. 8: Datenbankanbindung (1/40)

Kapitel 8: Datenbankanbindung. SoPra 2008 Kap. 8: Datenbankanbindung (1/40) Kapitel 8: Datenbankanbindung SoPra 2008 Kap. 8: Datenbankanbindung (1/40) Übersicht 1. Objekte und relationale Datenbanken 2. SQL 3. ADO.NET 4. Persistenzschicht SoPra 2008 Kap. 8: Datenbankanbindung

Mehr

Java Database Connectivity-API (JDBC)

Java Database Connectivity-API (JDBC) Java Database Connectivity-API (JDBC) Motivation Design Grundlagen Typen Metadaten Transaktionen Pratikum SWE 2 M. Löberbauer, T. Kotzmann, H. Prähofer 1 Motivation Problem: Zugriff auf ein DBMS ist Herstellerabhängig

Mehr

Benutzung eines Login Modules zur Authentifizierung unter JBoss 4.0.5

Benutzung eines Login Modules zur Authentifizierung unter JBoss 4.0.5 Benutzung eines Login Modules zur Authentifizierung unter JBoss 4.0.5 Erstellung der Datenbank Tabellen Als Login Module soll das in der JBoss Installation bereits vorhandene DatabaseServerLoginModule

Mehr

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

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

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

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

Mehr

SQL structured query language

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

Mehr

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

Microsoft Access 2010 SQL nutzen

Microsoft Access 2010 SQL nutzen Microsoft Access 2010 SQL nutzen Welche Bestellungen hat Kunde x aufgegeben? Welche Kunden haben noch nie bestellt? Wer hat welche Bestellungen von welchen Kunden aufgenommen? S(tructured)Q(uery)L(anguage)

Mehr

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

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

Mehr

JDBC. Allgemeines ODBC. java.sql. Beispiele

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

Mehr

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

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

Mehr

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D. 1 Copyright 1996-1997 by Axel T. Schreiner. All Rights Reserved. 7 Datenbankzugriff Prinzip Dieser Abschnitt beschäftigt sich mit dem Paket java.sql, das eine SQL-Schnittstelle für Java verkapselt. Java-Programme

Mehr

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

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

Mehr

FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen

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

Mehr

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

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

Mehr

Java und Datenbanken Ein Überblick

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

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II Alexander Goesmann Bioinformatics Resource Facility Center for Biotechnology Universität Bielefeld Vorlesung Sommer 2010 Überblick Datenspeicherung in relationalen Datenbanken

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

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

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

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

Mehr

Datenbankzugriff mit JDBC

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

Mehr

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

http://www.tutego.com/ JdbcTemplate

http://www.tutego.com/ JdbcTemplate http://www.tutego.com/ JdbcTemplate JdbcTemplate Die Klasse org.springframework.jdbc.core.jdbctemplateist zentral im JDBC-Paket von Spring. Die Klasse führt einfach SQL-Anweisungen aus liest Ergebnisse

Mehr

PostgreSQL unter Debian Linux

PostgreSQL unter Debian Linux Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...

Mehr

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

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

Mehr

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

Wie kommen die Befehle zum DBMS

Wie kommen die Befehle zum DBMS Wie kommen die Befehle zum DBMS Dr. Karsten Tolle Datenbanken und Informationssysteme Wie kommen die Befehle zum DBMS Bisher gesehen: SQL direkt zum DBMS Workbench Kommandozeile IBM Query Tool Weitere?

Mehr

Objekt-relationales Mapping und Performance-Tuning

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

Mehr

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten. Lehrstuhl für Datenbanken und Informationssysteme Wintersemester 1999/2000 Universität Augsburg, Institut für Informatik 25. Februar 2000 Prof. Dr. Werner Kießling A. Leubner, M. Wagner Datenbanksysteme

Mehr

SQL: statische Integrität

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

Mehr

Objektrelationale und erweiterbare Datenbanksysteme

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

Mehr

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

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

Tag 4 Inhaltsverzeichnis

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

Mehr

Klausur zur Vorlesung Datenbanksysteme I

Klausur zur Vorlesung Datenbanksysteme I Prof. Dr. W. Kießling 30.01.2002 Lehrstuhl für Datenbanken und Informationssysteme Universität Augsburg Klausur zur Vorlesung Datenbanksysteme I Wintersemester 2001/2002 Name Vorname Matrikelnummer Aufgabe

Mehr

Datenbankprogrammierung 2

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

Mehr

DB2 SQL, der Systemkatalog & Aktive Datenbanken

DB2 SQL, der Systemkatalog & Aktive Datenbanken DB2 SQL, der Systemkatalog & Aktive Datenbanken Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele Auf DB2 Datenbanken zugreifen DB2 Datenbanken benutzen Abfragen ausführen Den Systemkatalog

Mehr

Tutorium zum Aufbau einer objektrelationalen Abbildungsschicht in PHP

Tutorium zum Aufbau einer objektrelationalen Abbildungsschicht in PHP Tutorium zum Aufbau einer objektrelationalen Abbildungsschicht in PHP (Version 2.7 vom 27.10.2015) Einleitung Im folgenden wird die Erstellung einer Klasse zur Realisierung einer OR-Schicht erläutert.

Mehr

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

Chancen und Wachstumsfelder für PostgreSQL

Chancen und Wachstumsfelder für PostgreSQL Chancen und Wachstumsfelder für PostgreSQL Harald Armin Massa by Deutschsprachige PostgreSQL Konferenz 2013 Oberhausen Harald Armin Massa 2ndQuadrant Datenbanken seit 1984 Position Value Datenbank auf

Mehr

Hauptschritte einer JDBC-App

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

Mehr

Referenzielle Integrität SQL

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

Mehr

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik 15.06.2011 Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung Programmieraufwand für geübte

Mehr

Webbasierte Informationssysteme

Webbasierte Informationssysteme SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn - SS 2004 - Prof. Dr. Stefan Böttcher Folie 1 Was ist eine relationale Datenbank? Menge von Relationen (=Tabellen) und Constraints (=Integritätsbedingungen)

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

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

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum Datenbanken / DB2 Woche 9: GUI-Anbindung über JDBC

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr. Praktikum Datenbanken / DB2 Woche 9: GUI-Anbindung über JDBC Betreuer: Gudrun Fischer, Tobias Tuttas, Camille Pieume Raum: LF 230 Bearbeitung: 10., 11. und 13. Juli 2006 Datum Team (Account) Vorbereitung Präsenz Aktuelle Informationen, Ansprechpartner und Material

Mehr

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

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

Mehr

Benutzung eines Login Modules zur Authentifizierung unter JBoss 4.2.x

Benutzung eines Login Modules zur Authentifizierung unter JBoss 4.2.x Benutzung eines Login Modules zur Authentifizierung unter JBoss 4.2.x Erstellung der Datenbank Tabellen Als Login Module soll das in der JBoss Installation bereits vorhandene DatabaseServerLoginModule

Mehr

5.8 Bibliotheken für PostgreSQL

5.8 Bibliotheken für PostgreSQL 5.8 Bibliotheken für PostgreSQL Haskell/WASH: Modul Dbconnect PHP: pqsql-funktionen Java/JSP: JDBC Perl: DBI database interface modul Vorläufige Version 80 c 2004 Peter Thiemann, Matthias Neubauer 5.9

Mehr

Beispiel: DB-Mock (1/7)

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

Mehr

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

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

Mehr

Um einen neuen Konnektor anzulegen klicken sie in der Liste der Konnektoren auf die Schaltfläche Neue Konfiguration.

Um einen neuen Konnektor anzulegen klicken sie in der Liste der Konnektoren auf die Schaltfläche Neue Konfiguration. Konnektoren Allgemeines zu Konnektoren Die Konnektoren stellen ein Rahmengerüst für den Import und Export von Daten in den Webdesk (bzw. aus dem Webdesk) zur Verfügung. Die Definition von Quellkonnektoren

Mehr

Datenbanken für Online Untersuchungen

Datenbanken für Online Untersuchungen Datenbanken für Online Untersuchungen Im vorliegenden Text wird die Verwendung einer MySQL Datenbank für Online Untersuchungen beschrieben. Es wird davon ausgegangen, dass die Untersuchung aus mehreren

Mehr

Kein blasses Schema? NoSQL und Big Data mit Hibernate OGM

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

Mehr

JDO Java Data Objects

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

Mehr

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

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

Mehr

MySQL Queries on "Nmap Results"

MySQL Queries on Nmap Results MySQL Queries on "Nmap Results" SQL Abfragen auf Nmap Ergebnisse Ivan Bütler 31. August 2009 Wer den Portscanner "NMAP" häufig benutzt weiss, dass die Auswertung von grossen Scans mit vielen C- oder sogar

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

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

XML in der Oracle Datenbank

XML in der Oracle Datenbank XML in der Oracle Datenbank Oracle XML DB Eine kurze Einführung Gruppe A Michaela Geierhos Galina Hinova Maximilian Schöfmann AGENDA Warum XML in einer Datenbank? Was bietet die Oracle XML DB? Unterschiedliche

Mehr

Einführung in JDBC. IFIS Universität zu Lübeck 18.04.2007

Einführung in JDBC. IFIS Universität zu Lübeck 18.04.2007 Einführung in JDBC IFIS Universität zu Lübeck 18.04.2007 1 Was ist JDBC Standard für relationale DB: SQL Vor JDBC: Open Database Connectivity (ODBC), uniforme Schnittstelle für Zugriff JDBC: Programmierschnittstelle

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

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

Mehr

Strukturierte Objekttypen

Strukturierte Objekttypen Strukturierte Objekttypen Der Typ t approxmatch row des letzten Beispiels ist ein sogenannter Objekttyp. Definition: Ein Objekttyp ist ein Datentyp, bei dem (u.u. verschiedene) bekannte Datentypen zu einem

Mehr