fbi h_da Datenbanken Kapitel 8: Objekt-relationales Mapping - eine Einführung - Schestag Datenbanken (Cnam) Kapitel 8-1

Größe: px
Ab Seite anzeigen:

Download "fbi h_da Datenbanken Kapitel 8: Objekt-relationales Mapping - eine Einführung - Schestag Datenbanken (Cnam) Kapitel 8-1"

Transkript

1 Datenbanken Kapitel 8: Objekt-relationales Mapping - eine Einführung - Schestag Datenbanken (Cnam) Kapitel 8-1

2 Objekt-relationales Mapping Inhalte des Kapitels Motivation Impedance Mismatch Objekt-relationales Mapping Bottom Up und Top Down EJB 3.0 und die Java Persistence API (JPA) Entity-Klassen Implementierung von Beziehungen (Assoziationen) Persistenzkontext, EntityManager und Factory im Lifecycle einer Entity Lernziele Kenntnis der möglichen Konflikte bei Architekturen mit objektorientierten Programmiersprachen und relationalen DBMS als Persistenzschicht Verständnis für die Möglichkeiten des Mappings Buttom Up und Top Down Grundkenntnisse der EJB 3.0- und JPA-Spezifikation und deren Implementierung Schestag Datenbanken (Cnam) Kapitel 8-2

3 Motivation Impedance Mismatch Objektorientierte Programmiersprachen kapseln Daten und Verhalten in Objekten und benutzen objektorientierte Konzepte wie Vererbung Objektidentität komplexe Beziehungen mit beliebiger Graphennavigation. Relationale Datenbanken basieren auf der Relationen-Algebra und repräsentieren Daten in zweidimensionalen Tabellen. Wichtige Konzepte: Primärschlüssel mit PK-Constraints Fremdschlüssel mit FK-Constraints eingeschränkte Graphennavigation (Fremdschlüsselspalten dürfen nicht mehrwertig sein warum?) Die Konflikte, die aus den Strukturunterschieden zwischen beiden Systemen entstehen, bezeichnet man auch als Impedance Mismatch. lat. impedire: hemmen, hindern Impedance = Wechselstromwiderstand in der Elektrotechnik Schestag Datenbanken (Cnam) Kapitel 8-3

4 Impedance Mismatch Objektorientierte Applikation Objektmodell oo Klassendiagramm Objekte Collections OIDs Vererbung?? Wer mappt wie? Welches ist das führende System? Relationale Datenbank Relationenmodell Relationen elementare Datentypen PK-Constraints FK-Constraints Schestag Datenbanken (Cnam) Kapitel 8-4

5 Impedance Mismatch - Datentypen Komplexe vs. elementare Datentypen Objekte können beliebig komplexe Eigenschaften haben Kunde 0..* Adresse 1..1 während Relationen (Tabellen) nur Attribute (Spalten) mit elementaren Datentypen enthalten dürfen: Kunde Knr Adr_Strasse Adr_Land Adr_PLZ Adr_Ort oder Knr Kunde Kunde.Knr = Adresse.Knr Adresse Knr lfdnr Adr_Strasse Adr_Land Adr_PLZ Adr_Ort Schestag Datenbanken (Cnam) Kapitel 8-5

6 Impedance Mismatch - Identitäten Objektidentität vs. Primärschlüssel Zwei Objekte (in Java) sind gleich, wenn ihre Eigenschaften identische Werte enthalten. Sie sind jedoch nur dann identisch, wenn sie die gleiche Objektidentität haben. Objektgleichheit in Java: object1.equals(object2); Objektidentität in Java: object1 == object2 Zwei Datensätze einer Tabelle sind dann gleich, wenn ihre Spaltenwerte identisch sind. Sind sie dann auch identisch? Schestag Datenbanken (Cnam) Kapitel 8-6

7 Impedance Mismatch - Vererbung Vererbung Das Konzept der Vererbung ist in allen objektorientierten Sprachen fundamental verankert. Welche (unterschiedlichen) Implementierungsmöglichkeiten in einem Relationenmodell gibt es für eine Vererbungshierarchie, die in einem E/R- Diagramm modelliert wurde? Person IS-A Kunde Mitarbeiter Schestag Datenbanken (Cnam) Kapitel 8-7

8 Impedance Mismatch - Beziehungen Beziehungen Sowohl zwischen Objekten als auch zwischen Entitäten einer relationalen Datenbank gibt es die folgenden Beziehungstypen: 1:1, 1:n und n:m. Die Implementierung von Beziehungen erfolgt objektorientiert durch Referenzattribute (Objektidentitäten oder Collections von Objektidentitäten) relational durch Fremdschlüsselspalten (Wert der referenzierten Primärschlüsselspalte) Eine n:m-beziehung muss relational immer in zwei 1:n-Beziehungen aufgelöst werden: es entsteht eine dritte Tabelle (Relation). Schestag Datenbanken (Cnam) Kapitel 8-8

9 Impedance Mismatch - Graphennavigation Graphennavigation Die Implementierung von Beziehungen durch Objektreferenzen erlaubt eine direkte Navigation auf den assoziierten Objekten bzgl. einer Beziehung. Beispiel: Alle Bestellungen eines Kunden kunde.getbestellungen(); In relationalen Datenbanken ist eine Graphennavigation nicht möglich, da ausschließlich über Werte und nicht über Objektreferenzen referenziert wird. Lese mit einem DB-Zugriff den Datensatz des Kunden, und mit einem weiteren alle Bestellungen des Kunden oder lese die zwei Tabellen auf der DB, um dort eine Verbundoperation (Join) durchführen zu können: select * from kunde k, bestellung b where k.knr = b.knr; Wie kann man verhindern, dass man beim Iterieren über alle Kunden und gleichzeitigem Zugriff auf deren Bestellungen nicht jedes Mal eine Anfrage zur Datenbank schickt (1+N-Problem) Fetching-Strategien! Schestag Datenbanken (Cnam) Kapitel 8-9

10 Impedance Mismatch - Graphennavigation Bestellungsposten int bposten_id <<association impl.>> Bestellung bestellung Artikel artikel Artikel int artikel_id <<association impl.>> Kategorie kategorie Collection bposten Bestellung int bestellung_id <<association impl.>> Benutzer benutzer Collection bposten Benutzer int benutzer_id benutzer_name <<association impl.>> Gruppe gruppe Collection bestellungen -- Alle Benutzerinstanzen namens 'Schmidt String query = "select b from Benutzer b where b.benutzer_name = :name"; List<Benutzer> = em.createquery(query). setparameter("name","schmidt"). getresultlist(); Kategorie int kategorie_id <<association impl.>> Collection artikel Gruppe int gruppe_id <<association impl.>> Collection benutzer Welche Instanzen werden werden bei bei dieser dieser Query Query geladen? Schestag Datenbanken (Cnam) Kapitel 8-10

11 Impedance Mismatch - Graphennavigation Mit allen drei Benutzer-Instanzen k1, k2 und k3 namens 'Schmidt' sind die zugehörigen Instanzen vom Typ Bestellung, Bestellungsposten, Artikel, Kategorie und Gruppe assoziiert b1:bestellung bp1:bestellungsposten a1:artikel k1:benutzer bp2:bestellungsposten bp3:bestellungsposten a2:artikel a3:artikel k1:kategorie b2:bestellung bp4:bestellungsposten k2:kategorie bp5:bestellungsposten a4:artikel k2:benutzer k3:benutzer g1:gruppe g2:gruppe b3:bestellung und auch diese haben wiederum assoziierte Objekte. Schestag Datenbanken (Cnam) Kapitel 8-11

12 Objekt-relationales Mapping Motivation Impedance Mismatch Objekt-relationales Mapping Bottom Up und Top Down EJB 3.0 und die Java Persistence API (JPA) Entity-Klassen Implementierung von Beziehungen (Assoziationen) Persistenzkontext, EntityManager und Factory im Lifecycle einer Entity Schestag Datenbanken (Cnam) Kapitel 8-12

13 Objekt-relationales Mapping Ein Lösungsansatz zur Behebung der Konflikte des (objektrelationalen) Impedance Mismatch ist ein möglichst automatisiertes, transparentes objekt-relationales Mapping. Unter objekt-relationalem Mapping (O/R-Mapping) versteht man ein Mapping zwischen einem objektorientierten Modell (Klassendiagramm) und einem Relationenmodell bzw. dem Schema der DB. Ziel ist es, dieses Mapping weitestgehend automatisiert vornehmen zu lassen bei gleich bleibender Nutzung der Vorteile einer objektorientierten Programmiersprache und einer relationalen Persistenzschicht. Frameworks wie z.b. Hibernate ( unterstützen ein solches O/R-Mapping. Man spricht auch von O/R-Mappern. Schestag Datenbanken (Cnam) Kapitel 8-13

14 Objekt-relationales Mapping - Strategien Zwei Strategien des O/R-Mapping: Top-Down: Erstelle ein Objektmodell und mappe auf ein relationales Datenbankschema. Bottom-Up: Erstelle ein relationales Datenbankschema und mappe auf ein Objektmodell. Alle Erweiterungen des Modells bzw. Schemas erfolgen dann in der Regel gemäß der gewählten Strategie. Schestag Datenbanken (Cnam) Kapitel 8-14

15 OR Mapping Bottom Up und Top Down UML-Editor UML-Editor CASE-Tool getrieben Java de.hda.webshop.entity.jpa + - EntityX.java + - EntityY.java + - EntitiyZ.java + - oder direkt durch Codierung in der Entity-Klasse Java de.hda.webshop.entity.jpa + - EntityX.java + - EntityY.java + - EntitiyZ.java + - OR-Mapper OR-Mapper DB DB Bottom-Up Top-Down Schestag Datenbanken (Cnam) Kapitel 8-15

16 Objekt-relationales Mapping Motivation Impedance Mismatch Objekt-relationales Mapping Bottom Up und Top Down EJB 3.0 und die Java Persistence API (JPA) Entity-Klassen Implementierung von Beziehungen (Assoziationen) Persistenzkontext, EntityManager und Factory im Lifecycle einer Entity Schestag Datenbanken (Cnam) Kapitel 8-16

17 EJB Enterprise Java Beans EJB 1.0 Final Specification 1997 serverseitiges Komponentenmodell, mit dem (verteilte) Geschäftsobjekte entwickelt und dann durch EJB-Container verwaltet werden. Komponenten = Enterprise Beans: Session Beans, Entity Beans, Messagedriven Beans EJB 1.1 erste Verbesserung 1999, zusammen mit J2EE Container- und BeanManaged Persistence (CMP, BMP) noch keine Unterstützung von Beziehungsfeldern EJB Neuerungen in der Container Managed Persistence (CMP), die nicht abwärtskompatibel sind EJB zustandslose Session-Beans (Web Services) Erweiterungen EJB QL (Aggregatfunktionen, ) Schestag Datenbanken (Cnam) Kapitel 8-17

18 EJB 3.0 und die Java Persistence API JPA EJB 3.0 JSR 220*) Final Release 2006 Ziel: Vereinfachung von Java EE ist Bestandteil der Java Enterprise Edition 5.0 Plattform (JEE) EJB 3.1, November 2008: kosmetische Änderungen Java Persistence API JPA 1.0 eigenständiger Bestandteil der EJB-3.0-Spezifikation löst die Entity Beans ab Java Persistence Query Language JPQL wurde im Vergleich zu EJB 2.0 erweitert JPA 2.0 JSR 317 Final Release 2009 ist Bestandteil der Java Enterprise Edition 6.0 Plattform (JEE) Ergänzung verschiedener Feature sowohl im Bereich der Funktionalität (u.a. ElementCollection) als auch im Bereich Performance (u.a. Locking Strategien) Integration diverser proprietärer Erweiterungen in den Standard *) Schestag Datenbanken (Cnam) Kapitel 8-18

19 EJB 3.0 und die Java Persistence API JPA Im Rahmen der EJB 3.0-Spezifikation erfolgte eine Standardisierung der Java Persistence API als Basis-API und der Metadaten für die objekt-relationalen Persistenz-Mechanismen. Darstellung der Entitäten erfolgt durch POJO Plain old Java Objects. Zur Definition der Metadaten werden Java Annotations (seit Java 5.0) verwendet. Zuvor verwendete XML Deskriptor-Dateien können nach wie vor alternativ verwendet werden. Die JPA ist nicht auf den Einsatz unter Java EE begrenzt, sondern kann auch unter Java SE, also außerhalb eines Java EE Containers, eingesetzt werden. Es handelt sich bei der JPA um eine Spezifikation und NICHT um ein fertiges Framework! Implementierungen u.a. Hibernate, Oracle TopLinkEssentials 1, EclipseLink 2, Apache OpenJPA, Bea Kodo, 1) Referenzimplementierung für JPA 1.0 2) Referenzimplementierung für JPA 2.0 Schestag Datenbanken (Cnam) Kapitel 8-19

20 Objekt-relationales Mapping Motivation Impedance Mismatch Objekt-relationales Mapping Bottom Up und Top Down EJB 3.0 und die Java Persistence API (JPA) Entity-Klassen Implementierung von Beziehungen (Assoziationen) Persistenzkontext, EntityManager und Factory im Lifecycle einer Entity Schestag Datenbanken (Cnam) Kapitel 8-20

21 JPA Entity-Klassen (Entities) Entity-Klassen können abstrakte oder konkrete Java-Klassen sein, sie müssen nicht abgeleitet sein. Entities und andere Java-Klassen können innerhalb einer Vererbungshierarchie beliebig kombiniert werden. Vererbung, polymorphe Abfragen und polymorphe Assoziationen werden von Entities unterstützt. Bedingungen an Entity-Klassen Markierung mit ist erforderlich. Ein parameterloser Konstruktor (public oder protected) muss enthalten sein. Sie dürfen nicht als final deklariert sein, ebenso nicht ihre Methoden und die persistenten Attribute. Das Serializable-Interface muss implementiert sein. Sie müssen einen Primärschlüssel enthalten Persistente Attribute können durch Annotations (direkt oder bei ihren Getter-Methoden) Mapping- und andere Metainformationen erhalten. Schestag Datenbanken (Cnam) Kapitel 8-21

22 JPA Entity-Klassen (Entities) Beispiel für eine Entity-Klasse mit Mappinginformationen als public class Bestellung implements private Long private Kunde kunde; } public Kunde getkunde() { return kunde; } public Bestellung() {} // Default Konstruktor //weitere Getter- und Setter-Methoden Schestag Datenbanken (Cnam) Kapitel 8-22

23 JPA Primärschlüssel einer Entity Als Primärschlüssel kann ein einfaches Attribut oder ein zusammengesetzter Schlüssel einer Klasse verwendet werden. Zusammengesetzte Primärschlüssel erfordern die Definition einer Primärschlüsselklasse: primitive Typen für Instanzvariablen (incl. Wrapper, String, Date) public class und parameterloser Konstruktor Serializable implementieren equals() und hashcode() definieren. Einbindung eines zusammengesetzten Primärschlüssels: Embeddable Klasse: instanziiere die Primärschlüsselklasse in der zugehörigen Enitty-Klasse, oder die Entity-Klasse enthält alle Attribute der Primärschlüsselklasse, die Attribute werden einzeln gemappt. Schestag Datenbanken (Cnam) Kapitel 8-23

24 Objekt-relationales Mapping Motivation Impedance Mismatch Objekt-relationales Mapping Bottom Up und Top Down EJB 3.0 und die Java Persistence API (JPA) Entity-Klassen Implementierung von Beziehungen (Assoziationen) Persistenzkontext, EntityManager und Factory im Lifecycle einer Entity Schestag Datenbanken (Cnam) Kapitel 8-24

25 JPA Beziehungen Die JPA unterstützt die folgenden Beziehungstypen mit ihren Annotationen: 1:1 mit der 1:n mit der n:1 mit der n:m mit der Relationenmodell In der Regel sind nur unidirektionale Beziehungen möglich außer im Fall einer 1:1-Beziehung. Wie vermeidet man hier das Problem zirkularer Beziehungen? JPA Es werden uni- und bidirektionalen Beziehungen unterstützt. Bei bidirektionalen Beziehungen gibt es genau einen Besitzer und genau eine referenzierte Seite : Schestag Datenbanken (Cnam) Kapitel 8-25

26 JPA bidirektionale Beziehungen Diejenige Entity, die die referenzierte Seite repräsentiert, muss auf ihren Besitzer durch die Angabe des Feldes mappedby der entsprechenden Relationship-Annotation verweisen. Die n -Seite einer bidirektionalen Beziehung muss die Besitzer -Seite sein (der Besitzer des Fremdschlüssels in der Datenbank!). Kunde - Collection<Bestellung> bestellungen; 1..1 referenzierte Seite 1..* Besitzer Bestellung - Kunde public class Kunde = "kunde") private Collection<Bestellung> bestellungen = new HashSet(); public Collection<Bestellung> getbestellungen() { return bestellungen; } Wert des mappedby-attributes = Name } des Referenzattributes in der public class Bestellung private Kunde kunde; public Kunde getkunde() { return kunde; } } Schestag Datenbanken (Cnam) Kapitel 8-26

27 JPA Annotation von Referenzattributen Die Relationship kann annotiert werden am Referenzattribut (= Standard beim NetBeans = "kunde") Annotation des Referenzattributes private Collection<Bestellung> bestellungen = new HashSet(); an der get-methode des Referenzattributes: private Collection<Bestellung> bestellungen = new = "kunde") public Collection<Bestellung> getbestellungen() { return bestellungen; } public void setbestellungen(collection<bestellung> b) { this.bestellungen = b ; } Annotation der get-methode für das Referenzattribut Schestag Datenbanken (Cnam) Kapitel 8-27

28 JPA Besitzer referenzierte Seite Bei einer 1:1-Beziehung ist diejenige Entity Besitzer, die in der Datenbank den Fremdschlüssel enthält. Bei einer n:m-beziehung kann die Besitzerseite frei gewählt werden. Vererbung Die neue JPA unterstützt erstmals vollständig das Konzept der Vererbung. Details hierzu s. Literatur! Schestag Datenbanken (Cnam) Kapitel 8-28

29 JPA n:m-beziehungen (1) Wie werden n:m-beziehungen im Relationenmodell umgesetzt? Student 1..* Vorlesung 1..* Unidirektionale public class Student { } public class Vorlesung private Collection<Student> studenten = new HashSet(); public Collection<Student> getstudenten() { return studenten; } } Schestag Datenbanken (Cnam) Kapitel 8-29

30 JPA n:m-beziehungen (2) Bidirektionale Variante: Student 1..* referenzierte Seite 1..* Besitzer Vorlesung Nicht vergessen: Konsistenz der Bidirektionalität muss in der Anwendung sichergestellt public class Student = "studenten") private Collection<Vorlesung> vorlesungen = new HashSet(); public Collection<Vorlesung> getvorlesungen() { return vorlesungen; } public class Vorlesung private Collection<Student> studenten = new HashSet(); public Collection<Student> getstudenten() { return studenten; } } Schestag Datenbanken (Cnam) Kapitel 8-30

31 JPA n:m-beziehungen (3) Ergebnis in der Datenbank Student id name id = studenten_id Vorlesung_Student vorlesungen_id studenten_id vorlesungen_id = id Vorlesung id titel Der Name der Verbindungstabelle kann mit Hilfe von Annotationen spezifiziert werden, ebenso die Namen der public class (name = "Belegung", joincolumns inversejoincolumns ) private Collection<Vorlesung> vorlesungen = new HashSet(); } Belegung v_id s_id Schestag Datenbanken (Cnam) Kapitel 8-31

32 JPA n:m-beziehungen (4) ACHTUNG: Verwendet man in der Anwendung die JPA-API und Hibernate als JPA-Persistence-Provider werden die Primärschlüssel in der Join- Tabelle nicht automatisch erzeugt. Anmerkung: Verwendet man stattdessen direkt die Hibernate-API wird ein passender Primärschlüssel erzeugt. Work-around: public class (name = "Belegung, joincolumns inversejoincolumns uniqueconstraints s_id}) ) private Collection<Vorlesung> vorlesungen = new HashSet(); } Schestag Datenbanken (Cnam) Kapitel 8-32

33 JPA n:m-beziehungen (5) m:n-beziehungen können Beziehungsattribute haben (in unserem Beispiel: Note) Lösung: Assoziation muss als eigene Klasse modelliert werden zwei 1:n Beziehungen Student * id note Note 1..* 1..1 public class private Long id; private float private Student private Vorlesung vorlesung; } Schestag Datenbanken (Cnam) Kapitel 8-33

34 JPA Collections (1) Mehrwertige Assoziationen zwischen Entities werden als Collections innerhalb der Javaklassen implementiert die Collection ist der Datentyp des Referenzattributes, durch das eine mehrwertige Assoziation implementiert wird. Auch Value-Types (s. Komponenten) können innerhalb einer Entität als Collection definiert werden. Interfaces, die verwendet werden können, um Collections als Typ für Attribute von persistenten Klassen zu deklarieren: - java.util.set java.util.collection java.util.list java.util.map sowie selbst definierte Interfaces auf der Basis der Implementierung von org.hibernate.usertype.usercollectiontype. Schestag Datenbanken (Cnam) Kapitel 8-34

35 JPA Collections (2) Persistentes Speichern von Collection-Instanzvariablen erfolgt automatisch, wenn sie von einer Entität referenziert werden. Löschen von Collection-Instanzvariablen erfolgt nur automatisch bei explizitem delete cascade. Eine Entität kann nicht in zwei Collections auftauchen. Hibernate kann in einer Collection keine NULL-Werte speichern. Schestag Datenbanken (Cnam) Kapitel 8-35

36 Objekt-relationales Mapping Motivation Impedance Mismatch Objekt-relationales Mapping Bottom Up und Top Down EJB 3.0 und die Java Persistence API (JPA) Entity-Klassen Implementierung von Beziehungen (Assoziationen) Persistenzkontext, EntityManager und Factory im Lifecycle einer Entity Schestag Datenbanken (Cnam) Kapitel 8-36

37 JPA Persistenzkontext A persistence context is a set of managed entity instances in which for any persistent entity identity there is a unique entity instance. Within the persistence context, the entity instances and their lifecycle are managed by the entity manager. [JSR 220] DB-Schema Entity-Klassen EntityManager arbeitet mit Instanzen von Entity-Klassen im jeweiligen Persistenz-Kontext Schestag Datenbanken (Cnam) Kapitel 8-37

38 JPA Entity-Manager Die Verwaltung der Entities erfolgt durch einen Entity Manager: er erzeugt, ändert, löscht und sucht Entity-Instanzen. Container-Managed Entity Manager nur für Java EE Container Application-Managed Entity Manager von der Anwendung selbst verwaltet. Der Persistenzkontext umfasst eine Menge von Entity-Instanzen, die zu jedem Datensatz einer Entität der Datenbank jeweils höchstens ein Java-Objekt enthält. Gültigkeitsdauer eines Persistenzkontext: transaction-scoped: Gültigkeitsdauer = Dauer einer Transaktion Persistenzkontext wird nach Ablauf der Transaktion geschlossen extended: Gültigkeitsdauer kann mehrere Transaktionen umfassen Persistenzkontext muss explizit über den Entity Manager geschlossen werden. Ein Entity Manager ist immer genau einem Persistenzkontext zugeordnet. Schestag Datenbanken (Cnam) Kapitel 8-38

39 JPA Entity-Manager-Factory Entity Manager-Instanzen werden von der Instanz einer Entity Manager- Factory zur Verfügung gestellt. EntityManagerFactory 1 * DB-Schema Entity-Klassen EntityManager arbeitet mit Instanzen von Entity-Klassen im jeweiligen Persistenz-Kontext Schestag Datenbanken (Cnam) Kapitel 8-39

40 JPA Entity-Manager-Factory Eine EntityManagerFactory hält in ihrem Cache Mappingdaten und die generierten SQL-Anweisungen und kann für die Anwendung EntityManager-Instanzen erzeugen import javax.persistence.entitymanagerfactory; import javax.persistence.persistence; private static EntityManagerFactory emf; static { try { emf = Persistence.createEntityManagerFactory(persistenceUnitName); } catch (Throwable ex) { // Fehlermeldung } }; Schestag Datenbanken (Cnam) Kapitel 8-40

41 JPA Persistence Unit Eine Persistence Unit ist eine logische Einheit, der eine EntityManagerFactory mit deren zugehörigen EntityManagern zugeordnet wird, ebenso alle versehenen Klassen und deren Mappingkonfigurationen. Eine Persistence Unit wird über die xml-datei persistence.xml beschrieben, die sich im Verzeichnis WEB-INF/classes/META-INF befindet. In der Konfigurationsdatei persistence.xml können beliebig viele Persistence Units definiert werden. Schestag Datenbanken (Cnam) Kapitel 8-41

42 JPA Persistence Unit Ausschnitt aus der Definition einer Persistence Unit aus der Datei persistence.xml: <?xml version="1.0" encoding="utf-8"?> <persistence version="1.0" xmlns=" xmlns:xsi=" xsi:schemalocation=" <persistence-unit name="javawebshophdapu" transaction-type="resource_local"> <provider>org.hibernate.ejb.hibernatepersistence</provider> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="hibernate.connection.username" value=""/> <property name="hibernate.connection.driver_class" value=""/> <property name="hibernate.connection.password" value=""/> <property name="hibernate.connection.url" value=""/> </properties> </persistence-unit> Schestag Datenbanken (Cnam) Kapitel 8-42

43 JPA Persistence Unit A persistence unit defines the set of all classes that are related or grouped by the application and which must be colocated in their mapping to a single database. [JSR 220] Verbindungsaufbau über ausgewählten Treiber, url, user, pwd PersistenceUnit EntityManagerFactory * * * 1 DB-Schema Entity-Klassen EntityManager arbeitet mit Instanzen von Entity-Klassen im jeweiligen Persistenz-Kontext Schestag Datenbanken (Cnam) Kapitel 8-43

44 JPA Entity-Manager Beispiel für die Verwendung eines transaction-scoped Entity Managers: // Neuen EntityManager erstellen EntityManager em = emf.createentitymanager(); // Transaktion starten em.gettransaction().begin(); Kunde kunde1 = em.find(kunde.class, new Long(123)); kunde1.setname( Schmidt ); // verwaltete Entity Kunde kunde2 = new Kunde(); kunde2.setname( Meyer ); // neue Entity em.persist(kunde2); // verwaltete Entity em.gettransaction().commit(); emf = Instanz der EntityManagerFactory em.find() lädt eine Kundeninstanz aus der DB in den Persistenzkontext kunde1.setname() weist der Kundeninstanz im Persistenzkontext einen neuen Namen zu. kunde2 wird instanziiert und Werte werden zugewiesen. persist(kunde2) übernimmt kunde2 in den Persistenzkontext. commit() macht alle Änderungen persistent. Schestag Datenbanken (Cnam) Kapitel 8-44

45 JPA Entity-Manager Beispiel für die Verwendung eines transaction-scoped Entity Managers: Kunde Kunde Id Name Id Name 123 Schmitt Schmidt Meyer em.find(); em..commit(); Persistenzkontext von em 123 Schmitt Schmidt Persistenzkontext von em 123 Schmidt kunde1.setname(); NULL Meyer em.persist(kunde2); 124 Meyer Kunde kunde2 = new Kunde(); Schestag Datenbanken (Cnam) Kapitel 8-45

46 JPA Lebenszyklus einer Entity New kein Persistenzkontext, keine DB-Repräsentation, keine Id Managed wird in Persistenzkontext verwaltet, DB-Repräsentation Detached momentan kein Persistenzkontext, DB-Repräsentation Removed Zuordnung zu Persistenzkontext, DB-Repräsentation, zum Löschen freigegeben : Detached hat Datenbankrepräsentaion befindet sich im Persistenzkontext New Managed Removed Schestag Datenbanken (Cnam) Kapitel 8-46

47 JPA Query API und EJB QL Zur Formulierung von Queries stehen sowohl die EJB QL (aus früheren EJB-Versionen), erweitert um neue Features (z.b. Polymorphie von Queries), als auch SQL-Anweisungen zur Verfügung. Vorteil der EJB QL: Datenbankunabhängigkeit gute Portabilität Vorteil von SQL-Queries: EJB QL nicht ausreichend Nutzung von DBMS-spezifischen SQL Features gewünscht Das Query Interface enthält zahlreiche Methoden zur Angabe von Parametern sowie zur Durchführung der durch das Query-Objekt repräsentierten Anfrage (Details s. Literatur!). Schestag Datenbanken (Cnam) Kapitel 8-47

48 Objekt-relationales Mapping Motivation Impedance Mismatch Objekt-relationales Mapping Bottom Up und Top Down EJB 3.0 und die Java Persistence API (JPA) Entity-Klassen Implementierung von Beziehungen (Assoziationen) Persistenzkontext, EntityManager und Factory im Lifecycle einer Entity Schestag Datenbanken (Cnam) Kapitel 8-48

49 Exkurs Hibernate Hibernate implementiert die JPA-Spezifikationen und unterstützt mit folgenden Komponenten sowohl Java- als auch.net-anwendungs-entwicklung*): Hibernate Core: Persistenzengine des Hibernate Frameworks Hibernate Annotations: implementiert die durch die JPA standardisierten Annotations sowie weitere, hibernate-spezifische Annotations Hibernate Entity Manager: sowohl innerhalb eines Java EE Containers als auch als Standalone Lösung außerhalb eines Containers einsetzbar *) in Anlehnung an Schestag Datenbanken (Cnam) Kapitel 8-49

50 Exkurs Hibernate-Architektur Die Nutzung des Hibernate-Framworks ist skalierbar, was die Nutzung der Komponenten von Hibernate betrifft. Die Anwendung nutzt nur einen minimalen Teil von Hibernate Anwendung Anwendung Persistente Persistente Objekte Objekte Hibernate Hibernate persistence.xml persistence.xml hibernate.cfg.xml hibernate.cfg.xml hibernate.properties hibernate.properties Mapping Mapping Annotations Annotations / / XML XML Enthält die Beschreibungen aller PersistenceUnits (PU) des aktuellen Projektes (s.u.) Datenbank Datenbank Schestag Datenbanken (Cnam) Kapitel 8-50

51 Exkurs Hibernate-Architektur oder sie nutzt viele Komponenten von Hibernate: die Anwendung muss sich dann nicht um JDBC, JTA, JNDI etc. kümmern, da dies alles in Hibernate gekapselt wird: Wrapperklasse EntityManager Factory Transiente Transiente Objekte Objekte SessionFactory SessionFactory Transaction Transaction Factory Factory Anwendung Anwendung Connection Connection Provider Provider Persistente Persistente Objekte Objekte Session Session Transaction Transaction Wrapperklasse EntityManager JNDI JNDI JDBC JDBC JTA JTA Datenbank Datenbank Schestag Datenbanken (Cnam) Kapitel 8-51

52 Exkurs Hibernate-Architektur Interfaces Die Hibernate SessionFactory und die Hibernate Session sind Beispiele für Hibernate Interfaces, die mit der Implementierung der JPA-Spezifikationen Wrapperklassen erhielten, um sie den im JPA-Standard definierten Interfaces anzupassen: EntityManagerFactory Wrapperklasse für Hibernate SessionFactory: hält in ihrem Cache Mappingdaten und die generierten SQL Statements kann für die Anwendung EntityManager- (resp. Session-)Instanzen erzeugen EntityManager Wrapperklasse für Hibernate Session: kapseln Datenbankverbindungen und verwalten Transaktionen enthält First-Level-Cache und stellt automatisch Objektänderungen fest ist nicht(!) Thread-sicher, d.h. die Entities eines EntityManagers (resp. einer Session) dürfen nur in dem Thread dieser Session verwendet werden. Schestag Datenbanken (Cnam) Kapitel 8-52

53 Zusammenfassung Die Konflikte, die durch die Verwendung einer objekt-orientierten Applikationsschicht auf der Basis einer relationalen Persisenzschicht entstehen können bezeichnet man als Impedance Mismatch Objekt-relationales Mapping kann von einem objekt-orientierten Klassendiagramm ausgehend Top Down oder von einem relationalen Datenbankschema ausgehend Bottom Up realisiert werden EJB 3.0 und die Java Persistence API (JPA) stellen eine Spezifikation für OR-Mapping dar. Das Zusammenspiel von EntityManagerFactory, EntityManager und Persistenzkontext sowie die Beschreibung der PersistenceUnit in persistence.xml wurden vorgestellt. Schestag Datenbanken (Cnam) Kapitel 8-53

54 Datenbanken Einführung Semantische Datenmodellierung Relationenmodell Interne Datenorganisation SQL - Structured Query Language Datenbank-Anwendungsentwicklung Transaktionsmanagement Objekt-relationales Mapping Rückblicke und Ausblicke Schestag Datenbanken (Cnam) Kapitel 8-54

55 Datenbanken: Rückblicke und Ausblicke Aufbauend auf dem Grundlagenkurs Datenbanken (Vorlesung und Praktikum) des Anfangszyklus werden die folgenden Kurse zur Vertiefung im Bachelor- und Masterzyklus angeboten: Vertiefungs- Zyklus (Master) Engineering von DSS Data Warehouse NFE211 Engineering von DSS Data- / Textmining NFE212 Vorbereitungs- Zyklus (Bachelor) Konzeption u. Administration von Datenbanken NFE113 Datenanalyse deskriptive Methoden STA101 Projekt Systementwicklung NSY104 bzw. NFP121+50% NSY115 Pflichtkurse Anfangszyklus Datenbanken (V+P) NFA008 und NFA011 Programmieren (Java) NFA002, NFA003, NFA005 Projekt Systementwicklung NFA019 Schestag Datenbanken (Cnam) Kapitel 8-55

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

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

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

Mehr

Java Persistence API. Phillip Ghadir Oliver Tigges

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

Mehr

Datenbanken 2. Peter Muth Inge Schestag Uta Störl. Hochschule Darmstadt Fachbereich Informatik. Sommersemester 2017

Datenbanken 2. Peter Muth Inge Schestag Uta Störl. Hochschule Darmstadt Fachbereich Informatik. Sommersemester 2017 Datenbanken 2 Peter Muth Inge Schestag Uta Störl Hochschule Darmstadt Fachbereich Informatik Sommersemester 2017 Organisatorische Vorbemerkungen Vorlesungsunterlagen Online unter https://www.fbi.h-da.de/organisation/personen/schestaginge/datenbanken-2-bachelor.html

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

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

Persistenz. Ralf Gitzel

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

Mehr

Enterprise JavaBeans Überblick

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

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

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

Mehr

JPA mit Hibernate Java Persistence API in der Praxis

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

Mehr

Java Persistence API mit Hibernate

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

Mehr

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle

OO Programmiersprache vs relationales Model. DBIS/Dr. Karsten Tolle OO Programmiersprache vs relationales Model Vorgehen bisher Erstellen eines ER-Diagramms Übersetzen in das relationale Datenmodell Zugriff auf das relationale Datenmodell aus z.b. Java ER rel. Modell OO

Mehr

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

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

Mehr

Relationales Datenbankpraktikum

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

Mehr

Übungsaufgaben zur Klausurvorbereitung Datenbanken 2, SoSe 2016

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

Mehr

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

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

Mehr

Datenbanken 2. Kapitel 2: Java Persistence API

Datenbanken 2. Kapitel 2: Java Persistence API Datenbanken 2 Kapitel 2: Java Persistence API Java Persistence API JPA Inhalte des Kapitels Überblick über die Entwicklung der EJB- und JPA-Spezifikationen JPA Persistenz Teil 1 JPA Entity-Klassen (Entities)

Mehr

Übung B. JPA Java Persistence API. Prof. Dr. Andreas Schmietendorf 1. Übung B (Exkurs)

Übung B. JPA Java Persistence API. Prof. Dr. Andreas Schmietendorf 1. Übung B (Exkurs) Übung B JPA Java Persistence API Prof. Dr. Andreas Schmietendorf 1 Überblick zu JPA Prof. Dr. Andreas Schmietendorf 2 Überblick zu JPA Java Persistence API Objektrelationales Mapping - Java SE - Java EE

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

Java-Persistence-API mit Hibernate

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

Mehr

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

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

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

Objektorientierte Datenbanken

Objektorientierte Datenbanken OODB 8 Slide 1 Objektorientierte Datenbanken Vorlesung 8 Sebastian Iwanowski FH Wedel OODB 8 Slide 2 Offene Fragen vom letzten Mal: Kann man in einer JDOQL-Anfrage Elemente herausfiltern, deren Attribute

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

Enterprise JavaBeans (mit JBoss)

Enterprise JavaBeans (mit JBoss) Enterprise JavaBeans (mit JBoss) Christian Hülsmeier 30.10.2004 Überblick Rekapitulation des vorhandenen Wissen Entity-Beans Session-Beans Deployment-Deskriptor Sichten / Client-Anwendungen Applikationsserver

Mehr

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

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

Mehr

Enterprise JavaBeans Überblick

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

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

Persistenz. Ralf Gitzel

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

Mehr

Java Database Connectivity (JDBC) zum Zugriff aus in z.b. in Java geschriebenen Applikationen

Java Database Connectivity (JDBC) zum Zugriff aus in z.b. in Java geschriebenen Applikationen Rückblick Java Database Connectivity (JDBC) zum Zugriff aus in z.b. in Java geschriebenen Applikationen JDBC erlaubt Transaktionskontrolle, d.h. Festschreiben und Zurückrollen sowie setzten der Isolationsstufe

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

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

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

Mehr

Logischer Entwurf. Stufen der Entwicklung einer Datenbank. Inhalt. Übersicht. 1. Datenbank - Entwurf ( ER - Diagramm)

Logischer Entwurf. Stufen der Entwicklung einer Datenbank. Inhalt. Übersicht. 1. Datenbank - Entwurf ( ER - Diagramm) 10. Logischer Entwurf 10-1 10. Logischer Entwurf 10-2 Stufen der Entwicklung einer Datenbank 1. Datenbank - Entwurf ( ER - Diagramm) Logischer Entwurf 2. Umsetzen des ER - Diagramms ins relationale Modell

Mehr

Objektorientierte Datenbanken

Objektorientierte Datenbanken Objektorientierte Datenbanken Ralf Möller, FH-Wedel z Beim vorigen Mal: y Java Data Objects Teil 2, Queries z Heute: y Java Data Objects Teil 3, Objektidentität z Lernziele: y Grundlagen der Programmierung

Mehr

Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

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

Mehr

4.2 Workshop EJB. Entwicklung von EJB-Anwendungen

4.2 Workshop EJB. Entwicklung von EJB-Anwendungen 4.2 Workshop EJB Entwicklung von EJB-Anwendungen Welche Schritte werden benötigt, bis eine verteilte EJB-Anwendung einsatzbereit ist? Was muss alles implementiert werden? An welchen Stellen unterstützt

Mehr

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

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

Mehr

Die Java Persistence API

Die Java Persistence API Die Java Persistence API Seminararbeit im Studiengang Scientific Programming WS 2012 / 2013 Autor: Andreas Kuck Matrikelnummer: 846239 1. Betreuer: Prof. Dr. Bodo Kraft 2. Betreuer: Dipl.-Math. (FH) Michael

Mehr

Technische Fachhochschule Berlin, FB VI - Medieninformatik Software Engineering (SE II), 2. Kapitel: Wir bauen uns eine Web-Applikation.

Technische Fachhochschule Berlin, FB VI - Medieninformatik Software Engineering (SE II), 2. Kapitel: Wir bauen uns eine Web-Applikation. Kapitel WIR BAUEN UNS EINE WEB-APPLIKATION (ZWEITER TEIL) 2.5 Persistente Klassen mit JPA (Zweite Fingerübung) Entity Relationship-Modell Die persistente Klasse Inventory () Ein Attribut der Klasse zum

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.

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

Enterprise JavaBeans Überblick

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

Mehr

Spring & Hibernate HANSER. Eine praxisbezogene Einführung. Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr

Spring & Hibernate HANSER. Eine praxisbezogene Einführung. Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr Spring & Hibernate Eine praxisbezogene Einführung 2., aktualisierte Auflage HANSER 1 Einleitung 1 1.1 Für wen ist dieses Buch?

Mehr

Persistenz. Ralf Gitzel

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

Mehr

Hibernate Eine Einführung

Hibernate Eine Einführung Hibernate - Eine Einführung OPITZ CONSULTING GmbH 2012 Seite 1 Wer bin ich? Norbert.Schneider@opitz-consulting.com @bertschneider OPITZ CONSULTING GmbH 2012 Seite 2 Wer sind Sie? OPITZ CONSULTING GmbH

Mehr

Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr. Spring & Hibernate. Eine praxisbezogene Einführung HANSER

Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr. Spring & Hibernate. Eine praxisbezogene Einführung HANSER Richard Oates Thomas Langer Stefan Wille Torsten Lueckow Gerald Bachlmayr Spring & Hibernate Eine praxisbezogene Einführung HANSER 1 Einleitung 1 1.1 Für wen ist dieses Buch? 1 1.2 Organisation des Buches

Mehr

Datenbanken 1 Datenbanken SPO 2014 SPO 2007 Belegnummer Belegnummer

Datenbanken 1 Datenbanken SPO 2014 SPO 2007 Belegnummer Belegnummer Datenbanken 1 Datenbanken SPO 2014 SPO 2007 Belegnummer 30.7312 Belegnummer 30.7302 Wintersemester 2017/18 (Bachelor) Materialien zur Vorlesung Inge Hochschule Darmstadt Fachbereich Informatik Motivation

Mehr

ADF Persistenzmechanismen

ADF Persistenzmechanismen ADF Persistenzmechanismen ADF BC und EJB/JPA im Vergleich Hendrik Gossens Nürnberg, 19.11.2013 MT AG GESCHÄFTSFORM HAUPTSITZ INHABERGEFÜHRTE AG RATINGEN GRÜNDUNGSJAHR 1994 BESCHÄFTIGTE BETEILIGUNGEN 180

Mehr

Behandelt Java EE 6. O Reillys Taschenbibliothek. Java EE. kurz & gut. Arun Gupta O REILLY. Übersetzung von Thomas Demmig

Behandelt Java EE 6. O Reillys Taschenbibliothek. Java EE. kurz & gut. Arun Gupta O REILLY. Übersetzung von Thomas Demmig O Reillys Taschenbibliothek Behandelt Java EE 6 Java EE kurz & gut O REILLY Arun Gupta Übersetzung von Thomas Demmig Inhalt Vorwort... 1 Java Platform, Enterprise Edition... 1 Einführung... 1 Deliverables...

Mehr

Literatur. 3. Java Persistence API ( JPA)

Literatur. 3. Java Persistence API ( JPA) 3. Java Persistence API ( JPA) Problem: OO in relationale DB Idee des Persistence Mapper Einfache Entity-Klasse Lebenslauf eines Entity-Objekts Umsetzung von 1:N- und M:N-Relationen Konsistenzüberwachung

Mehr

Session Beans & Servlet Integration. Ralf Gitzel

Session Beans & Servlet Integration. Ralf Gitzel s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Aufbau einer Stateless s Stateful s Web Client Offene Antwort von

Mehr

Spring & Hibernate Eine praxisbezogene Einführung

Spring & Hibernate Eine praxisbezogene Einführung Richard Oates, Thomas Langer, Stefan Wille, Torsten Lueckow, Gerald Bachlmayr Spring & Hibernate Eine praxisbezogene Einführung ISBN-10: 3-446-41213-1 ISBN-13: 978-3-446-41213-2 Weitere Informationen oder

Mehr

Probleme bei der Nutzung der Bean Validation in JPA

Probleme bei der Nutzung der Bean Validation in JPA Probleme bei der Nutzung der Bean Validation in JPA Die aktuelle Netbeans-Installation 6.9.1 bietet als JPA-Realisierung EclipseLink in der Version 2.0.2, die in der Zusammenarbeit mit der Referenzimplementierung

Mehr

5.2 Workshop EJB. Entwicklung von EJB-Anwendungen. Das JOnAS-System

5.2 Workshop EJB. Entwicklung von EJB-Anwendungen. Das JOnAS-System 5.2 Workshop EJB Entwicklung von EJB-Anwendungen Welche Schritte werden benötigt, bis eine verteilte EJB-Anwendung einsatzbereit ist? Was muss alles implementiert werden? An welchen Stellen unterstützt

Mehr

Enterprise JavaBeans Überblick: 8. Test-Driven Development. 8.1 Einleitung 8.2 Beispiel 8.3 Anwendung mit Eclipse und dem JBoss Application Server

Enterprise JavaBeans Überblick: 8. Test-Driven Development. 8.1 Einleitung 8.2 Beispiel 8.3 Anwendung mit Eclipse und dem JBoss Application Server Enterprise JavaBeans Überblick 1. Überblick Komponententechnologien 2. Einführung 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.

Mehr

Datenbanken 2. Kapitel 2: Java Persistence API

Datenbanken 2. Kapitel 2: Java Persistence API Datenbanken 2 Kapitel 2: Java Persistence API Java Persistence API JPA Inhalte des Kapitels Überblick über die Entwicklung der EJB- und JPA-Spezifikationen JPA Persistenz Teil 1 JPA Entity-Klassen (Entities)

Mehr

Datenbanken 2. Kapitel 4: Transaktionsmanagement, Caching und Ladestrategien

Datenbanken 2. Kapitel 4: Transaktionsmanagement, Caching und Ladestrategien Datenbanken 2 Kapitel 4: Transaktionsmanagement, Caching und Ladestrategien Transaktionsmanagement, Caching und Ladestrategien Inhalte des Kapitels Transaktionsmanagement First Level-, Second Level- und

Mehr

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

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

Mehr

Objektrelationales Mapping mit EclipseLink und Spring. Stefan Scheidt OPITZ CONSULTING GmbH

Objektrelationales Mapping mit EclipseLink und Spring. Stefan Scheidt OPITZ CONSULTING GmbH Objektrelationales Mapping mit EclipseLink und Spring Stefan Scheidt OPITZ CONSULTING GmbH Ihr Referent Stefan Scheidt Senior Architekt bei der OPITZ CONSULTING GmbH Seit über 10 Jahren im Oracle- und

Mehr

Datenbanken Datenbanken 1 Belegnummer Belegnummer

Datenbanken Datenbanken 1 Belegnummer Belegnummer Datenbanken Datenbanken 1 Belegnummer 30.7302 Belegnummer 30.7312 Blockkurs 31.08. 11.09.2015 Wintersemester 2015/16 (Bachelor) Materialien zur Vorlesung Michael Roth Inge Hochschule Darmstadt Fachbereich

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

Enterprise JavaBeans Überblick: 10. Queries Interface Query 10.2 EJB Query Language 10.3 Named Queries

Enterprise JavaBeans Überblick: 10. Queries Interface Query 10.2 EJB Query Language 10.3 Named Queries Enterprise JavaBeans Überblick 1. Überblick Komponententechnologien 2. Einführung 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.

Mehr

Wiederholung. Systemtests

Wiederholung. Systemtests Systemtests 1. Wer (Tester): Tester 2. Was (Testobjekt): ganzes System 3. Auf was (Testziel): Alles außer Wartbarkeit 4. Wie (Testmethode, Testwerkzeug): Lasttest, UI Roboter Blackbox- Testverfahren Äquivalenzklassen

Mehr

EJB 3.0 alles wird einfacher. Stephan Metzler, eurolink SWITZERLAND

EJB 3.0 alles wird einfacher. Stephan Metzler, eurolink SWITZERLAND Endlich ein POJO EJB 3.0 alles wird einfacher Referent:, eurolink SWITZERLAND Java EE 5 Über mich IT Consulting FH-Dozent Schwerpunkt J2EE / EJB Autor diverser Schulungsunterlagen Firmenschulungen Fachvorträge

Mehr

Application Development Framework (ADF) Teil 3: Standardisierte Persistenzmechanismen in Verbindung mit ADF

Application Development Framework (ADF) Teil 3: Standardisierte Persistenzmechanismen in Verbindung mit ADF Application Development Framework (ADF) Teil 3: Standardisierte Persistenzmechanismen in Verbindung mit ADF Autor(en): Michael Bräuer, Kersten Mebus ORACLE Deutschland GmbH Das von Oracle zur Verfügung

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

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

Polyglot Persistence und NoSQL

Polyglot Persistence und NoSQL Polyglot Persistence und NoSQL Mehr Flexibilität, mehr Komplexität!? Stefan Kühnlein Solution Architekt OPITZ CONSULTING GmbH Nürnberg, 18.11.2014 OPITZ CONSULTING GmbH 2014 Seite 1 Agenda 1. Rückblick

Mehr

Objektorientierte Datenbanken

Objektorientierte Datenbanken Objektorientierte Datenbanken Ralf Möller, FH-Wedel z Beim vorigen Mal: y Java Data Objects Teil 1 z Heute: y Java Data Objects Teil 2 z Lernziele: y Grundlagen der Programmierung persistenter Objekte

Mehr

5. Übung zu Software Engineering

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

Mehr

Unsere Webapplikation erweitern

Unsere Webapplikation erweitern Unsere Webapplikation erweitern Um mit Play zu arbeiten: 1. Starten Sie zunächst den MySQL-Server. Führen Sie dazu auf dem USB-Stick mysql_start.cmd aus. 2. Sie brauchen eine Windows-Kommandozeile: Starten

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 2018 Michael Theis, Lehrbeauftragter 2 Servlet API Websockets JSF JAX-WS JAX-RS JMS JAXB JSON-P JEE Enterprise Application

Mehr

EJB 3 - Erfahrungen aus der Praxis. Heiko W. Rupp

EJB 3 - Erfahrungen aus der Praxis. Heiko W. Rupp EJB 3 - Erfahrungen aus der Praxis Heiko W. Rupp heiko.rupp@redhat.com Agenda Background Kurzabriss Standard Erfahrungen aus der Praxis Umstieg von EJB 2 Neuentwicklung 2 Agenda Background Kurzabriss Standard

Mehr

Inhaltsverzeichnis Einleitung Imperative Sprachkonzepte Objektorientierte Sprachkonzepte

Inhaltsverzeichnis Einleitung Imperative Sprachkonzepte Objektorientierte Sprachkonzepte Inhaltsverzeichnis 1 Einleitung... 1 1.1 Entwicklungsumgebung... 1 1.2 Vom Quellcode zum ausführbaren Programm... 3 1.3 Erste Beispiele... 4 1.4 Wichtige Merkmale der Programmiersprache Java... 6 1.5 Zielsetzung

Mehr

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi Projektgruppe Thomas Kühne Komponentenbasiertes Software Engineering mit OSGi Anforderungen der PG IDSE an ein Komponenten- Client Nativer Client Web Client Alternativen IDSE Nutzer Szenario Pipe IDSE

Mehr

Algorithmen und Datenstrukturen 06

Algorithmen und Datenstrukturen 06 31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung

Mehr

Enterprise JavaBeans Überblick

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

Mehr

Java Persistence Puzzlers

Java Persistence Puzzlers Die Spielregeln 1. Mappings 2. Das API 3. Abfragen Vielen Dank! Frank Schwarz, buschmais GbR Java Forum Stuttgart Java Persistence Puzzlers Wie funktioniert es? Ich frage. Sie antworten. package application;

Mehr

Datenbanken 2. Kapitel 5: Pufferverwaltung und Optimierung von Zugriffspfaden

Datenbanken 2. Kapitel 5: Pufferverwaltung und Optimierung von Zugriffspfaden Datenbanken 2 Kapitel 5: Pufferverwaltung und Optimierung von Zugriffspfaden Inhalte des Kapitels Pufferverwaltung und Optimierung von Zugriffspfaden DB-Puffermanagement DB-Zugriffspfade Explains Lernziele

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Datenbanken Objektrelationales Mapping Spezifikation

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

Mehr

Vesant JDO Genie für transparente Persistenz mit relationalen Datenbanken.

Vesant JDO Genie für transparente Persistenz mit relationalen Datenbanken. Vesant JDO Genie für transparente Persistenz mit relationalen Datenbanken. Martin Wessel Senior Pre-Sales Consultant Versant GmbH mailto: Martin.Wessel@versant.net Copyright Versant Europe 2004. All products

Mehr

MyCoRe > V1.0: Technische Weiterentwicklung

MyCoRe > V1.0: Technische Weiterentwicklung MyCoRe > V1.0: Technische Weiterentwicklung Frank Lützenkirchen, Kathleen Krebs Folie 1 Kontrollflüsse bisher Kontrollflüsse sind im MyCoRe Kern oder der darauf basierenden Applikation fix und explizit

Mehr

Konzeptueller Entwurf

Konzeptueller Entwurf Konzeptueller Entwurf UML Klassendiagrame UML Assoziationen Entspricht Beziehungen Optional: Assoziationsnamen Leserichtung ( oder ), sonst bidirektional Rollennamen Kardinalitätsrestriktionen UML Kardinalitätsrestriktionen

Mehr

Persistenz unter Kontrolle mit JDBI für Java

Persistenz unter Kontrolle mit JDBI für Java .consulting.solutions.partnership Persistenz unter Kontrolle mit JDBI für Java DOAG Konferenz 2016 17. November 2016 Persistenz unter Kontrolle mit JBDI für Java 1 2 3 SQL - effizienter Zugriff auf die

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

Kardinalitäten. Komponentenbasierte Software- Entwicklung. Prof. Dr. Stephan Kleuker

Kardinalitäten. Komponentenbasierte Software- Entwicklung. Prof. Dr. Stephan Kleuker Kardinalitäten in JPA A x 1:1 zu einem A-Objekt gehört (maximal) ein anderes B- Objekt, die jeweils zu (maximal) einem A-Objekt gehören 1:N zu einem A-Objekt gehören beliebig viele B-Objekte, die jeweils

Mehr

Kardinalitäten. Umsetzung unidirektional 1 : N ( 3 / 4 )

Kardinalitäten. Umsetzung unidirektional 1 : N ( 3 / 4 ) Kardinalitäten in JPA Umsetzung unidirektional 1 : N ( 1 / 4 ) A x 1:1 zu einem A-Objekt gehört (maximal) ein anderes B- Objekt, die jeweils zu (maximal) einem A-Objekt gehören 1:N zu einem A-Objekt gehören

Mehr

Arbeitsblätter zu Teil I des Praktikums

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

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

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