Referent: Stephan Metzler

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

Object Relational Mapping
Object Relational Mapping
Objektrelationales Mapping mit JPA
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
Cloud42 Dominik Muhler Seminar StuPro cims cims.
JPQL Java Persistence Query Language
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Kapselung , toString , equals , Java API
Was ist J2EE Die Vorteile von J2EE J2EE Modell Die Komponente von J2EE
WS06/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen Übersicht zur Vorlesung.
Erweiterung B2B Usermanagement / LDAP-Anbindung
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java 2 Enterprise Edition (J2EE)
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
Stephan Bury  Pascal Busch  Bita Gerami
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
MD 5/02 CORBA Lebensdauer von Objekten, Transaktionen.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
Struts Seminar Javabasierte Webanwendungen. Tobias Kutzler2 Überblick Historie Was ist Struts? Model Controller View Zusammenfassung.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Transaction Script Software Component Technology for Distributed Applications.
Introducing the .NET Framework
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Java Data Objects (JDO) und Implementierung in FastObjects.
J2EE Conformance von JDBC Middleware und EJB Applikation Server Detlef KünzelSystemberater +49 (0)
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
JDBC: JAVA Database Connectivity
YouTube5 .0 Projektpräsentation
Einführung Servlets/JSPs
Herzlich Willkommen… welcome… soyez la bienvenue….
Working With Persistent Objects
Wir bauen uns eine Webapplikation!
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
EJB-Applikationsserver
SQL Server 2005 CLR-Integration
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Bean Validation JSR-303 Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Servlets Servlets und relevantes API Servlets & SQL via JDBC Implementierungs - Spezifika Architektur Überblick Vertikaler Prototyp / Spezifikation.
Spring Framework.
Esprit Database Suite Eine leistungsfähige Java-Persistzenzschicht zur einfachen Programmierung von Datenbankapplikation.
Ein JEE 5 Webframework Jörg Wüthrich Infopoint, 4. Februar 2009
JavaServer Faces Urs Frei. Inhalt JSF Funktionsweise Rückblick JSP Bestandteile von JSF So einfach ist die Anwendung (Beispiel) Eclipse im Einsatz (Entwicklungsumgebung)
Datenanbindung in Webapplikationen
Hibernate (OR-Mapping)
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Enhydra Shark Workflow-Management Frank Aurich Markus Reisch.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
EJB Architektur für große Web - Applikationen Gerald Weber
O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf.
Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk.
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
1 Persistence Strategies for WebServices Senior Consultant Java Forum Stuttgart, 27. Juni 2002.
© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013.
DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH
© 2012 TravelTainment Einführung in Enterprise JavaBeans Seminarvortrag von Ralf Penners Folie 1 von 34.
Verteilte Anwendungen: J2EE
Jakarta Struts Quasi-Standard für JSP-basierte Entwicklung: Jakarta Struts Key Features von Struts: Implementierung des Action-Command-Pattern („Model.
Tutorstunde 10.
 Präsentation transkript:

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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; }

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"/>

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

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

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

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>

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

 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()

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

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

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

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

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

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 !(email != null ? !email.equals(user.email): user.email != null); }

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

Lern-Ziel