Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Referent: Stephan Metzler

Ähnliche Präsentationen


Präsentation zum Thema: "Referent: Stephan Metzler"—  Präsentation transkript:

1 Referent: Stephan Metzler Email: s.metzler@eurolink.ch
Java EE 5

2 Über mich … IT Consulting FH-Dozent Schwerpunkt J2EE / EJB / JPA
Autor diverser Schulungsunterlagen Firmenschulungen Fachvorträge pers. Fokus : Middle-Tier-Architekturen und O/R-Mapping für verteilte Softwaresysteme

3 Agenda Motivation – JSR 220 OOA Thematik – Annotations, Generics
Begriffe eines O/R Mapping Frameworks Hibernate als O/R Mapping Framework Anwendungsbeispiel – Library Architektur von Hibernate Lebenszyklus anhand des Objektzustand

4 Agenda Motivation – JSR 220 OOA Thematik – Annotations, Generics
Begriffe eines O/R Mapping Frameworks Hibernate als O/R Mapping Framework Anwendungsbeispiel – Library Architektur von Hibernate Lebenszyklus anhand des Objektzustand

5 Agenda Motivation – JSR 220 OOA Thematik – Annotations, Generics
Begriffe eines O/R Mapping Frameworks Hibernate als O/R Mapping Framework Anwendungsbeispiel – Library Architektur von Hibernate Lebenszyklus anhand des Objektzustand

6 Agenda Motivation – JSR 220 OOA Thematik – Annotations, Generics
Begriffe eines O/R Mapping Frameworks Hibernate als O/R Mapping Framework Anwendungsbeispiel – Library Architektur von Hibernate Lebenszyklus anhand des Objektzustand

7 Agenda Motivation – JSR 220 OOA Thematik – Annotations, Generics
Begriffe eines O/R Mapping Frameworks Hibernate als O/R Mapping Framework Anwendungsbeispiel – Library Architektur von Hibernate Lebenszyklus anhand des Objektzustand

8 Agenda Motivation – JSR 220 OOA Thematik – Annotations, Generics
Begriffe eines O/R Mapping Frameworks Hibernate als O/R Mapping Framework Anwendungsbeispiel – Library Architektur von Hibernate Lebenszyklus anhand des Objektzustand

9 Agenda Motivation – JSR 220 OOA Thematik – Annotations, Generics
Begriffe eines O/R Mapping Frameworks Hibernate als O/R Mapping Framework Anwendungsbeispiel – Library Architektur von Hibernate Lebenszyklus anhand des Objektzustand

10 Agenda Beziehungen – O vs R Collections
Hibernate Session und Transaktionen Datenbankabfragen Hibernate Types Fetching und Caching Best Practice

11 Agenda Beziehungen – O vs R Collections
Hibernate Session und Transaktionen Datenbankabfragen Hibernate Types Fetching und Caching Best Practice

12 Agenda Beziehungen – O vs R Collections
Hibernate Session und Transaktionen Datenbankabfragen Hibernate Types Fetching und Caching Best Practice

13 Agenda Beziehungen – O vs R Collections
Hibernate Session und Transaktionen Datenbankabfragen Hibernate Types Fetching und Caching Best Practice

14 Agenda Beziehungen – O vs R Collections
Hibernate Session und Transaktionen Datenbankabfragen Hibernate Types Fetching und Caching Best Practice

15 Agenda Beziehungen – O vs R Collections
Hibernate Session und Transaktionen Datenbankabfragen Hibernate Types Fetching und Caching Best Practice

16 Agenda Beziehungen – O vs R Collections
Hibernate Session und Transaktionen Datenbankabfragen Hibernate Types Fetching und Caching Best Practice

17 Buchempfehlung Java Persistence with Hibernate Second Edition of Hibernate in Action Christian Bauer and Gavin King November, 2006 | 880 pages ISBN: Softbound print book PDF ebook

18 Best Practice Feingranulare Klassenarchitektur als eingebettete Objekte (Embeddable Klassen). Address (street, city, etc) kapseln Widerverwendbarkeit Vereinfacht Refactoring Comp NAME: VARCHAR STREET: VARCHAR CITY: VARCHAR - name: String - address: Address Company - street: String - city: String Address

19 Best Practice Persistente Klassen mit Identifikation deklarieren
Synthetic Keys (ohne Geschäftsrelevanz) non-Primitive Type (java.lang.Long oder java.lang.String) @Id @GeneratedValue public Long getId() { return this.id; }

20 Best Practice Eigene Datei für jedes XML Mapping
Keine monolithische Mapping Dateien 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"/>

21 Best Practice XML Mapping als Ressourcen laden
Mapping Dateien zusammen mit POJOs deployen

22 Best Practice SQL Strings aus Applikation auslagern
Non ANSI Standard SQL Praxiserfarung unterstützt Portierbarkeit SELECT … <pojo>

23 Best Practice JDBC Hibernate überlassen
benutzerdefinierte JDBC Connection als letzter Ausweg Eigene Implementation als net.sf.hibernate.connection.ConnectionProvider JDBC

24 Best Practice Benutzerdefinierte Typen definieren
Java Typ soll persistiert werden (Auslagerung in Komponente ist nicht sinnvoll!) Implementierung eines net.sf.hibernate.UserType trennt Applikation und (Hibernate) Typen Transformation UserType <pojo>

25 Best Practice Direkte JDBC nur im Flaschenhals
BULK-SQL können als direkte JDBC schneller sein mit Benchmark beweisen! (Hibernate)-Session bietet Transaktions-Strategy <pojo> Hibernate JDBC

26  Best Practice Session Flushing
Synchronisation mit der Datenbank beeinträchtigt Performanz (Transktionsende / Querys / Session.flush()) automatisches Session Flushing ausschalten Reihenfolge der Abfragen Reihenfolge von Operationen in Transaktionen <pojo> Session.flush()

27 Best Practice bei Multi-Tier-Architektur saveOrUpdate() verwenden
Session über Tiers transferieren für jeden Service Request eigene Session verwenden mit Session.saveOrUpdate() den persistenten Zustand eines Objektes aktualisieren CLIENT WEB LOGIC EIS Hibernate.Session

28  Best Practice eigene Session pro Use Case
kurze Datenbank Transaktion erhöht Skalierbarkeit Detached Objects verwenden Session schliessen Session Session Session

29 Best Practice Hibernate Exceptions nicht "beheben"
Transaktion zurückführen (Rollback) Session schliessen find() anstelle von load() <pojo> TRANSACTION EXEPTION ROLLBACK

30 Best Practice Thread Local Session Pattern
Session durch Request assoziert request Servlet Session JSP POJO response Filter Session.close()

31 Best Practice Business Logik von Hibernate abstahieren
Hibernate relevater Code in Interface auslagern Thread Local Session Pattern DAO in Kombination Hibernate User Types Benutzerdefinierte JDBC BusinessObject DataAccessbject uses encapsulates

32 Best Practice Equals() und hashCode() überschreiben
Objektvergleich ausserhalb Session problematisch nie PK der Datenbank verwenden stattessen BK (Business Key) verwenden @Override public boolean equals(Object obj) { if (this == obj) return true; if (!(obj instanceof User)) return false; final User user = (User) obj; return !( != null ? ! .equals(user. ): user. != null); }

33 Best Practice keine exotischen Beziehungen verwenden
gute Use Cases definieren selten N:M Beziehungen oft zusätzliche Informationen in der Link Tabelle erwünscht zwei 1:N Beziehungen mit zusätzlicher Link Tabelle ID Projekt 1 2 ID Name 1 2 ID_Name ID_Projekt Start 1 2

34 Lern-Ziel


Herunterladen ppt "Referent: Stephan Metzler"

Ähnliche Präsentationen


Google-Anzeigen