Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Hannah Lehmann Geändert vor über 7 Jahren
1
© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013
2
© 2012 TravelTainment Inhaltsübersicht 1. Motivation und Einleitung 2. Java Database Connectivity 2.1 Anwendung 2.2 Problematik der Technologie 3. Objektrelationale Abbildungen 3.1 Hibernate 3.1.1 Anwendung 3.1.2 Vergleich zu JDBC
3
© 2012 TravelTainment Inhaltsübersicht 4. Spring 4.1 Kerntechnologien 4.2 Spring Data Access/Integration 4.2.1 Spring JDBC 4.2.1.1 Das JdbcTemplate 4.2.1.2 Vorteile der Technologie 4.2.2 Spring ORM 4.2.2.1 Nutzung von Hibernate mit Spring 4.2.2.2 Vorteile von Spring ORM für Hibernate 5. Fazit
4
© 2012 TravelTainment 1. Motivation und Einleitung Viele Computeranwendungen arbeiten mit Datenbanken Datenbankzugriff in Applikationen über verschiedene Tools und Technologien In Java: JDBC primäre DB-Schnittstelle ORM Fortgeschritten und objektorientiert Spring Weitere Erleichterungen
5
© 2012 TravelTainment Kapitel 2 JDBC
6
© 2012 TravelTainment 2. Java Database Connectivity Datenbankschnittstelle der Java-Plattform Am 19. Februar 1997 erstmals veröffentlicht Neueste Version: JDBC 4.1 Hauptfunktionalität: Verbindung zu DB aufbauen SQL- Abfragen senden Mit den Ergebnissen arbeiten
7
© 2012 TravelTainment 2.1 Anwendung Verbindungsaufbau Abfrage senden Verarbeiten
8
© 2012 TravelTainment 2.2 Problematik der Technologie JDBC arbeitet SQL- basiert! Aufwändiges Ressourcen- management Sich wiederholender Prozess Exceptionhandling bei allen API- Aufrufen Geschäftslogik < Verwaltung Manuelles Überführen von Datenbankeintrag in Objekt und umgekehrt
9
© 2012 TravelTainment Kapitel 3 ORM
10
© 2012 TravelTainment 3. Objektrelationale Abbildung Erlaubt das Ablegen von Objekten in einer Datenbank Schicht zwischen Anwendung und Datenbank Behandelt Unverträglichkeit zwischen Objekten und relationalen Datenbanken Beispiel Java: Java Persistence API IDNAMEDESCRIPTIONAGE 1SimonTest21 ORM
11
© 2012 TravelTainment 3.1 Hibernate Implementierung der Java Persistence API Neuste Version im März 2013 veröffentlicht: 4.2.0 Mapping der POJOs über XML oder Annotationen Parameterloser Konstruktor ist Pflicht Importieren des Packages Annotieren des POJOs mit @Entity und einer @Id @Column zur Spezifizierung der Spaltendefinition
12
© 2012 TravelTainment Konfigurationsdatei hibernate.cfg.xml Beinhaltet Daten für SessionFactory Datenbank- spezifikation Weitere Spezifikationen wie „Dialect“ Annotierte Klassen
13
© 2012 TravelTainment 3.1.1 Anwendung Session wird aus SessionFactory bezogen Ausführen einer Query über Session Methode ist in Transaktion gehüllt Erzeugen der SessionFactory
14
© 2012 TravelTainment 3.1.2 Vergleich zu JDBC Beispiel: Abfragen eines Objekts aus der Datenbank
15
© 2012 TravelTainment 3.1.2 Vergleich zu JDBC Weniger Verwaltungsaufwand Überführung der DB- Einträge in Objekte nicht nötig (Sinn der Technologie) Geschäftslogik steht mehr im Vordergrund OO-Konzept wird verfolgt
16
© 2012 TravelTainment Kapitel 4 Spring
17
© 2012 TravelTainment 4 Spring Modular aufgebautes Framework (ca. 20 Module) Aktuelle Version: 3.2 vom 13.12.2012 Ziel: Entwicklung mit Java/JEE vereinfachen gute Programmierpraktiken fördern
18
© 2012 TravelTainment 4.1 Kerntechnologien Dependeny Injection bzw. Inversion of Control IoC-Container beinhaltet alle wichtigen Applikations- Komponenten (Beans) inklusive Abhängigkeiten Beans können aus ApplicationContext bezogen werden
19
© 2012 TravelTainment Bean-Definition 1. XML 2. Annotationen
20
© 2012 TravelTainment 4.2 Spring Data Access / Integration Wie gestaltet Spring das Arbeiten mit JDBC und Hibernate angenehmer und einfacher?
21
© 2012 TravelTainment Spring JDBC
22
© 2012 TravelTainment 4.2.1.1 Das JdbcTemplate Einschränkungen in JDBC Springs Lösungsansatz: JdbcTemplate Threadsafe, kann in allen DAOs genutzt werden Benötigt DataSource, das Verbindungsparameter definiert:
23
© 2012 TravelTainment Nutzung des JdbcTemplates Injizieren der DataSource -Bean in DAO: JdbcTemplate stellt ca. 100 Methoden bereit execute(sql: String) update() -Methoden
24
© 2012 TravelTainment Vereinfachtes Mapping RowMapper- Interface Implementierung Nutzung
25
© 2012 TravelTainment 4.2.1.2 Vorteile der Technologie Kapselung JDBC-Code in Template Kein Behandeln von SQL- Exceptions Kein Ressourcen- management Kein Iterieren durch ResultSet Anwendungslogik steht im Vordergrund
26
© 2012 TravelTainment Spring ORM
27
© 2012 TravelTainment 4.2.2 Spring ORM Folgendes Kapitel konzentriert sich auf Hibernate Spring bietet First-Level Support für Hibernate Früher: Template-Klassen wie bei JDBC gesehen Ziele Schichten- trennung Lose Kopplung Einfaches Testen und Warten
28
© 2012 TravelTainment 4.2.2.1 Nutzung von Hibernate mit Spring Hibernate ohne Spring: SessionFactory erzeugen mithilfe der Konfigurationsdatei Hibernate mit Spring: SessionFactory als Bean definieren DataSource injizieren SessionFactory in alle relevanten Klassen injizieren
29
© 2012 TravelTainment SessionFactory in DAO nutzen Injizieren der SessionFactory-Bean Annotieren mit @Repository konsistente Runtime- Exceptions (DataAccessException). Wie gewohnt, Hibernate in DAOs benutzen
30
© 2012 TravelTainment 4.2.2.1 Nutzung von Hibernate mit Spring Weitere Erleichterung durch Spring-Transaction- Management: Ohne Spring Manuelles Starten und Beenden von Transaktionen Mit Spring @Transactional Spring handhabt Transaktionen eigenständig: Öffnen, Schließen, Fehlerbehandlung
31
© 2012 TravelTainment 4.2.2.2 Vorteile Einfache Möglichkeit, SessionFactory s bzw. DataSource s auszutauschen Exceptions werden in einheitliche Hierarchie überführt Transaktionsmanagement wird vereinfacht Allgemein: Dependency Injection Geschäftslogik wird von Datenzugriffs- und Transaktionsstrategien getrennt Losere Kopplung zwischen Applikationskomponenten
32
© 2012 TravelTainment Kapitel 5 Fazit
33
© 2012 TravelTainment 5. Fazit Spring JDBC: JdbcTemplate kapselt „boilerplate code“ Kein manuelles Verbindungs-, Transaktions- oder Ressourcenmanagement notwendig Spring vereinfacht Mapping zwischen Objekt und relationalem Datensatz ( RowMapper ) Weiterhin SQL-basiert
34
© 2012 TravelTainment 5. Fazit Spring ORM/Hibernate: Kein Template, sondern Arbeiten mit Standard-API Kein manuelles Aufsuchen der Konfigurationsdatei oder Erstellen der SessionFactory Definition der SessionFactory in Spring-Context führt zu loserer Kopplung Transaktions- und Exceptionhandling wird verbessert Spring ist eine Bereicherung für Hibernate-Anwendung!
35
© 2012 TravelTainment Quellen M. Konda, Just Spring Data Access, 2012 R. Johnson, J. Hoeller u.a., Spring Framework Reference Documentation 3.2.3, 2013 S. Slavic, „community.jboss.org“, 2010 M. Inden, Der Weg zum Java-Profi, 2011 M. Fowler, „martinfowler.com“, 2004 Wikipedia, August 2013: „Java Database Connectivity“, „Objektrelationale Abbildung“, „Java Persistence API“, „Spring“, „Hibernate“ Für detaillierte Angaben vgl. Literaturverzeichnis im Skript.
36
© 2012 TravelTainment Fragen
37
© 2012 TravelTainment Vielen Dank für die Aufmerksamkeit
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.