enterprise-it-praktikum hibernate-einführung institut für telematik universität zu lübeck...
TRANSCRIPT
![Page 1: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/1.jpg)
Enterprise-IT-PraktikumHibernate-Einführung
Institut für TelematikUniversität zu Lübeck
Wintersmester 2012/13Dennis BoldtDavid Gregorczyk
![Page 2: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/2.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Enterprise-IT-Praktikum – Hibernate-Einführung 2
Hibernate…• Objekt/Relationale Persistenz und Abfrage• Abbildung zwischen
– Java Klassen <-> Datenbanktabellen– Java Datentypen <-> SQL Datentypen
![Page 3: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/3.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Enterprise-IT-Praktikum – Hibernate-Einführung 3
Was bedeutet das?• Gängige Datenbanken verwenden als Modell
Entitäten und Relationen• Java verwendet als Modell Objekte• O/R Mapper bringt beide Welten zusammen• Stellt fertige Mechanismen bereit zur Abbildung
von der Objekt-Welt in die ER-Welt
![Page 4: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/4.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Enterprise-IT-Praktikum – Hibernate-Einführung 4
Mappings konstruieren• Zwei Möglichkeiten, Java Klassen zu DB-Entitäten
zu mappen:1.XML-basiert (Dateien der Form *.hbm.xml)2.Annotations-basiert (z.B. @Entity)
![Page 5: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/5.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Enterprise-IT-Praktikum – Hibernate-Einführung 5
Mappings konstruieren über XML• Erster Schritt: Klasse definieren• Zweiter Schritt: XML-Datei anlegen und
Relationen eintragenHibernate-XML-Datei:<hibernate-mapping package="de.uniluebeck.itm.eit.model"> <class name="Book" table="books"> <id name="id" column="book_id"> <generator class="native"/> </id> </class></hibernate-mapping>
Java-Klasse:class Book{ private Integer id; public getId() ... public setId(Integer id) ...}
![Page 6: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/6.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Enterprise-IT-Praktikum – Hibernate-Einführung 6
Mappings konstruieren über Java-Annotationen• Erster Schritt: Klasse definieren• Zweiter Schritt: Annotationen einfügen
Annotationen:@Entity@Table(name = "books")class Book implements Serializable { @Id @GeneratedValue private Integer id; public getId() ... public setId(Integer id) ...}
Java-Klasse:class Book{ private Integer id; public getId() ... public setId(Integer id) ...}
![Page 7: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/7.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Enterprise-IT-Praktikum – Hibernate-Einführung 7
Datenmodell• Einfache Java-Klassen (POJOs)• Zugriff nach Bean-Konventionen (Getter/Setter)
oder direkter Attributzugriff• Methoden und Attribute mit private & protected
möglich• Instanziierung im Applikationskern mit new• Implementierung des (parameterlosen) Default-
Konstruktors erforderlich• Hibernate unterstützt auch Collections
http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/collections.html
![Page 8: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/8.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Ladestrategien• Lazy
Referenzierte Entitäten werden nur nach Bedarf geladen• Eager
Referenzierte Entitäten werden beim ersten Zugriff geladen
• Ladestrategien lassen sich auf Klassen-, Relationen, oder Query-Ebene anwenden
• Ermöglicht Einstellungen zur Performance-Optimierung• Mit Vorsicht und nur sehr bewusst einzusetzen, da
durch einen Eager-Zugriff im worst-case die gesamte Datenbank ausgelesen werden könnte!
![Page 9: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/9.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Lebenszyklus einer Entität: die Hibernate Session• Session stellt die Objekt-Identität sicher
– Verwendet PK, so liefert load() zur selben ID immer dieselbe Instanz
– Generierten technischen Schlüssel aber nicht für Implementierung von equals() bzw. hashCode() verwenden! (erst mit flush() werden generierte IDs zugewiesen)
• Session hat Methoden zur Transaktionssteuerung• Session hat Factory-Methoden für Queries, z.B.
createQuery, getNamedQuery
![Page 10: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/10.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Lebenszyklus einer Entität: die Hibernate Session
![Page 11: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/11.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Hibernate-Beispiel: Transaktionssteuerung• Zunächst SessionFactory-Objekt generieren
Verschiedene Wege, dies zu erreichen…• Über die Session-Factory können Sessions generiert
und damit wiederum Transaktionen und Persistenzzugriffe gesteuert werden:
Session s = HibernateUtil.getSessionFactory().getCurrentSession();try{ s.beginTransaction(); s.save(new Book()); s.getTransaction().commit();} catch (Exception e){ s.getTransaction().rollback();}
![Page 12: Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c71a28ab14218dbde9/html5/thumbnails/12.jpg)
Institut für Telematik | Enterprise-IT-Praktikum
Hibernate Startpunkte• http://docs.jboss.org/hibernate/core/3.6/quickstart/
en-US/html_single/• http://docs.jboss.org/hibernate/core/3.6/reference/
en-US/html_single/• http://docs.jboss.org/hibernate/entitymanager/3.6/
reference/en/html_single/