Stephan Metzler IT Consulter Java Hibernate Framework und
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Referent: Email: Stephan Metzler s. metzler@eurolink. ch Java EE 5
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Über mich … n n n IT Consulting FH-Dozent Schwerpunkt J 2 EE / EJB / JPA Autor diverser Schulungsunterlagen Firmenschulungen Fachvorträge pers. Fokus : Middle-Tier-Architekturen und O/R-Mapping für verteilte Softwaresysteme
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Motivation – JSR 220 n OOA Thematik – Annotations, Generics n Begriffe eines O/R Mapping Frameworks n Hibernate als O/R Mapping Framework n Anwendungsbeispiel – Library n Architektur von Hibernate n Lebenszyklus anhand des Objektzustand
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Motivation – JSR 220 n OOA Thematik – Annotations, Generics n Begriffe eines O/R Mapping Frameworks n Hibernate als O/R Mapping Framework n Anwendungsbeispiel – Library n Architektur von Hibernate n Lebenszyklus anhand des Objektzustand
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Motivation – JSR 220 n OOA Thematik – Annotations, Generics n Begriffe eines O/R Mapping Frameworks n Hibernate als O/R Mapping Framework n Anwendungsbeispiel – Library n Architektur von Hibernate n Lebenszyklus anhand des Objektzustand
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Motivation – JSR 220 n OOA Thematik – Annotations, Generics n Begriffe eines O/R Mapping Frameworks n Hibernate als O/R Mapping Framework n Anwendungsbeispiel – Library n Architektur von Hibernate n Lebenszyklus anhand des Objektzustand
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Motivation – JSR 220 n OOA Thematik – Annotations, Generics n Begriffe eines O/R Mapping Frameworks n Hibernate als O/R Mapping Framework n Anwendungsbeispiel – Library n Architektur von Hibernate n Lebenszyklus anhand des Objektzustand
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Motivation – JSR 220 n OOA Thematik – Annotations, Generics n Begriffe eines O/R Mapping Frameworks n Hibernate als O/R Mapping Framework n Anwendungsbeispiel – Library n Architektur von Hibernate n Lebenszyklus anhand des Objektzustand
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Motivation – JSR 220 n OOA Thematik – Annotations, Generics n Begriffe eines O/R Mapping Frameworks n Hibernate als O/R Mapping Framework n Anwendungsbeispiel – Library n Architektur von Hibernate n Lebenszyklus anhand des Objektzustand
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Beziehungen – O vs R n Collections n Hibernate Session und Transaktionen n Datenbankabfragen n Hibernate Types n Fetching und Caching n Best Practice
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Beziehungen – O vs R n Collections n Hibernate Session und Transaktionen n Datenbankabfragen n Hibernate Types n Fetching und Caching n Best Practice
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Beziehungen – O vs R n Collections n Hibernate Session und Transaktionen n Datenbankabfragen n Hibernate Types n Fetching und Caching n Best Practice
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Beziehungen – O vs R n Collections n Hibernate Session und Transaktionen n Datenbankabfragen n Hibernate Types n Fetching und Caching n Best Practice
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Beziehungen – O vs R n Collections n Hibernate Session und Transaktionen n Datenbankabfragen n Hibernate Types n Fetching und Caching n Best Practice
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Beziehungen – O vs R n Collections n Hibernate Session und Transaktionen n Datenbankabfragen n Hibernate Types n Fetching und Caching n Best Practice
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Agenda n Beziehungen – O vs R n Collections n Hibernate Session und Transaktionen n Datenbankabfragen n Hibernate Types n Fetching und Caching n Best Practice
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Buchempfehlung n Java Persistence with Hibernate Second Edition of Hibernate in Action Christian Bauer and Gavin King November, 2006 | 880 pages ISBN: 1 -932394 -88 -5 n Softbound print book n PDF ebook
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Feingranulare Klassenarchitektur als eingebettete Objekte (Embeddable Klassen). o Address (street, city, etc) kapseln o Widerverwendbarkeit o Vereinfacht Refactoring Company - name: String - address: Address - street: String - city: String NAME: VARCHAR STREET: VARCHAR CITY: VARCHAR
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Persistente Klassen mit Identifikation deklarieren o Synthetic Keys (ohne Geschäftsrelevanz) o non-Primitive Type (java. lang. Long oder java. lang. String) @Id @Generated. Value public Long get. Id() { return this. id; }
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Eigene Datei für jedes XML Mapping o Keine monolithische Mapping Dateien o Vereinfacht Teamumfeld <hibernate-mapping package="library"> <class name="User" table="T_USER"> <id name="id"> <generator class="native"/> </id> <property name="firstname„ column="FIRSTNAME" length="32"/>
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n XML Mapping als Ressourcen laden o Mapping Dateien zusammen mit POJOs deployen
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n SQL Strings aus Applikation auslagern o Non ANSI Standard SQL Praxiserfarung o unterstützt Portierbarkeit SELECT … <pojo>
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n JDBC Hibernate überlassen o benutzerdefinierte JDBC Connection als letzter Ausweg o Eigene Implementation als net. sf. hibernate. connection. Connection. Provider JDBC
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Benutzerdefinierte Typen definieren o Java Typ soll persistiert werden (Auslagerung in Komponente ist nicht sinnvoll!) o Implementierung eines net. sf. hibernate. User. Type o trennt Applikation und (Hibernate) Typen Transformation User. Type <pojo>
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Direkte JDBC nur im Flaschenhals o BULK-SQL können als direkte JDBC schneller sein o mit Benchmark beweisen! o (Hibernate)-Session bietet Transaktions-Strategy <pojo> Hibernate JDBC
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Session Flushing o Synchronisation mit der Datenbank beeinträchtigt Performanz (Transktionsende / Querys / Session. flush()) n automatisches Session Flushing ausschalten n Reihenfolge der Abfragen n Reihenfolge von Operationen in Transaktionen <pojo> Session. flush()
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n bei Multi-Tier-Architektur save. Or. Update() verwenden o Session über Tiers transferieren o für jeden Service Request eigene Session verwenden o mit Session. save. Or. Update() den persistenten Zustand eines Objektes aktualisieren CLIENT WEB LOGIC Hibernate. Session EIS
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n eigene Session pro Use Case o kurze Datenbank Transaktion erhöht Skalierbarkeit o Detached Objects verwenden o Session schliessen Session
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Hibernate Exceptions nicht "beheben" o Transaktion zurückführen (Rollback) o Session schliessen o find() anstelle von load() <pojo> TRANSACTION EXEPTION ROLLBACK
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Thread Local Session Pattern o Session durch Request assoziert request response Servlet Session JSP POJO Filter Session. close()
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Business Logik von Hibernate abstahieren o Hibernate relevater Code in Interface auslagern n n Thread Local Session Pattern DAO in Kombination Hibernate User Types Benutzerdefinierte JDBC Business. Object uses Data. Accessbject encapsulates
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n Equals() und hash. Code() überschreiben o Objektvergleich ausserhalb Session problematisch n nie PK der Datenbank verwenden @Override n stattessen BK (Business Key) verwenden public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof User)) return false; final User user = (User) obj; return !(email != null ? !email. equals(user. email): user. email != null); }
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Best Practice n keine exotischen Beziehungen verwenden o gute Use Cases definieren selten N: M Beziehungen o oft zusätzliche Informationen in der Link Tabelle erwünscht n zwei 1: N Beziehungen mit zusätzlicher Link Tabelle ID ID Name 1 1 2 ID_Name ID_Projekt 1 1 2 1 Start 2 Projekt
Stephan Metzler IT Consulter Java Hibernate Framework und Persistence API Lern-Ziel
- Slides: 34