Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf.

Ähnliche Präsentationen


Präsentation zum Thema: "O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf."—  Präsentation transkript:

1 O/R - Mapper Hibernate ETIS SS04

2 Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf der Anwendung Anfrage Zusammenfassung

3 ETIS SS04Hibernate 3 Motivation (I) Impendance Mismatch: Kluft zwischen RDBMS und Objektorientierte Programmiersprachen –RDBMS: Relationen, Tupel, Attribute, Fremdschlüsselbeziehungen, … –OO Programmiersprachen: Klassen, Objekten, Eigenschaften, Beziehungen, … sollen Objekte persistent gemacht werden: –Kluft zwischen beiden Paradigmen tritt hervor, d.h. ca. 35% des Anwendungscodes für Mapping Anwendungsdaten auf Datenspeicher aufgewendet

4 ETIS SS04Hibernate 4 Motivation (II) Überwinden Impedance Mismatch –kleine Anwendungen: manuelles Mapping mittels JDBC ausreichend –große Anwendungen: ORM sparen Zeit und Arbeitsaufwand Ziele ORM: –Abbilden von Anwendungsdaten auf DB-Daten –Plain Old Java Objects (POJOs) persistent machen –Anfragen und Suchen von Daten –Abhängigkeiten von herstellerspezifischem SQL-Code beseitigen –evtl. dafür Query Language anbieten

5 ETIS SS04Hibernate 5 Motivation (III) Hibernate: –populärstes O/R Mapping-Werkzeug für Java Umgebung –open source + große aktive Community Ziel: –Entwickler 95% der Programmieraufgaben für Datenpersistenz abnehmen –Zeit für manuelles Datenhandling SQL + JDBC reduzieren –transparente Persistenz Voraussetzungen: –JDK ab 1.2 –SQL DBMS (MySQL, Oracle, DB2, generischer Zugriff…)

6 ETIS SS04Hibernate 6 Architektur (I) Transiente Objekte Persistente Objekte Anwendung Transaktion Session SessionFactory TransactionFactory ConnectionProvider JNDIJDBCJTA Datenbank

7 ETIS SS04Hibernate 7 Architektur (II) SessionFactory –Cache von kompilierten Abbildungen für einzelne DBs –Factory für Sessions Session –repräsentiert Konversation zwischen Anwendung und persistentem Speicher –kapselt JDBC-Verbindung –hält Cache von persistenten Objekten, für Navigation auf Objektgraph oder um Objekte anhand ID zu finden

8 ETIS SS04Hibernate 8 Architektur (III) Persistente Objekte –kurzlebige Objekte, die persistenten Status + Geschäftsfunktionen enthalten (POJOs/JavaBeans) –mit genau einer Session verbunden Transiente Objekte –Instanzen von persistenten Klassen, die aktuell nicht mit Session verbunden Transaction –kurzlebiges Objekt, um atomare Arbeitseinheit festzulegen –abstrahiert von JDBC, JTA, Corba-Transaktionen –Session kann mehrere Transaktionen umfassen

9 ETIS SS04Hibernate 9 Persistente Klassen (I) public class Serie { private Integer id; private String serie; private Set comic = new HashSet(); public Integer getId() { return id;} //restliche getter-Methoden public void setId(Integer integer) { id = integer;} //restliche setter-Methoden }

10 ETIS SS04Hibernate 10 Persistente Klassen (II) Hibernate arbeitet am besten mit POJOs (ähnlich JavaBeans) Hibernate ist nicht eingeschränkt bei Datentypen für Eigenschaften der POJOs, möglich sind also: –alle JDK-Typen inkl. Collections –primitive Datentypen Hibernate unterstützt transparente Persistenz –keine speziellen Interfaces, Superklassen für Persistentmachung nötig –Reflection und Laufzeitklassen Enhancement (keine Bytecode- Manipulation) –keine Abhängigkeit von Hibernate in der POJO-Klasse

11 ETIS SS04Hibernate 11 Mapping-Files (I)

12 ETIS SS04Hibernate 12 Mapping-Files (II) Enthält Metadaten für das O/R-Mapping –Deklaration persistenter Klassen –Abbildung von Eigenschaften auf die von DB-Relationen persistente Klassen sollten Identifier besitzen –zur Unterscheidung von Objekten Defaultsettings benutzt, wenn nur Property mit Namen angegeben Beziehungen (Assoziationen) von Objekten mappen: –one-to-one, one-to-many, –many-to-one, many-to-many

13 ETIS SS04Hibernate 13 Konfiguration und Datenbank (I) jdbc:mysql://short/hibernate com.mysql.jdbc.Driver net.sf.hibernate.dialect.MySQLDialect create

14 ETIS SS04Hibernate 14 Konfiguration und Datenbank (II) Properties mit Präfix connection –notwendige Konfiguration zum Aufbau einer JDBC- Verbindung property dialect –legt den SQL-Dialekt fest property hibernate.hbm2ddl.auto mit Wert create –automatisches Anlegen des Schemas in die DB, wenn SessionFactory kreiert wird mapping resource –Pfade zu den Mapping Files der Klassen

15 ETIS SS04Hibernate 15 Ablauf der Anwendung (I) private SessionFactory sessionFactory; public Run() { try { sessionFactory = new Configuration().configure(“/hibernate.cfg.xml“).buildSessionFactory(); } catch (HibernateException e) { e.printStackTrace(); } public static void main(String[] args) { Run run = new Run();

16 ETIS SS04Hibernate 16 Ablauf der Anwendung (II) Session s = factory.openSession(); Transaction tx = null; try { tx = s.beginTransaction(); Serie serie = new Serie(); serie.setSName(“Asterix"); s.save(serie); tx.commit(); s.close(); } catch (HibernateException e) { e.printStackTrace(); }}

17 ETIS SS04Hibernate 17 Ablauf der Anwendung (III) SessionFactory –verantwortlich für eine DB (kann nur ein XML Konfigurationsfile nutzen (hibernate.cfg.xml)) –Eigenschaften der Session Factory vor ihrer Erstellung treffen (Session Factory ist unveränderlich) Session –repräsentieren Arbeitseinheit mit DB –geöffnet von SessionFactory –jede DB-Operation in Session tritt innerhalb einer Transaktion auf (isoliert DB-Operationen) Objekte wie in Java üblich erzeugt (persistent mit save)

18 ETIS SS04Hibernate 18 Anfragen (I) Session s = factory.openSession(); Transaction tx = null; try { tx = s.beginTransaction(); Query q1 = s.createQuery("from Serie"); List l = q1.list() //Ausgabe... tx.commit(); s.close(); } catch (HibernateException e) { e.printStackTrace(); }

19 ETIS SS04Hibernate 19 Anfragen (II) Hibernate hat verschiedene Anfrage-Methods –Hibernate Query Language (HQL), –Criteria –direkte SQL-Anfragen am flexiblesten: HQL –leicht zu erlernen –vielseitige oo Erweiterung für SQL Hibernate nutzt für gesamte SQL-Kommunikation mit DB PreparedStatements und Parameterbindung

20 ETIS SS04Hibernate 20 Zusammenfassung Mapping von Klassen, Speichern und Suchen von Objekten in Hibernate angeschaut Hibernate kann viel mehr (http://www.hibernate.org) Roundtrip Development: Unterstützung für Transformation zu und von Quellcode (java), M appingfiles (hbm) und DB Definition (ddl)

21 ETIS SS04Hibernate 21 Literatur


Herunterladen ppt "O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf."

Ähnliche Präsentationen


Google-Anzeigen