Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013.

Ähnliche Präsentationen


Präsentation zum Thema: "© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013."—  Präsentation transkript:

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


Herunterladen ppt "© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013."

Ähnliche Präsentationen


Google-Anzeigen