Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Spring Framework Grundkurs

JDBC mal anders – mit Spring

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
JDBC erlaubt eine oft nicht gerade homogene Art des Datenbankzugriffs. Genau dort setzt Spring an, indem es neue Konzepte rund um Abfragen, Exception Handling und Objekt-Mapping bietet.

Transkript

Haben Sie sich nicht auch schon immer gefragt, ob es nicht einen einfacheren Weg gebe mit Datenbanken zu arbeiten als mit herkömmlichen JDBC, mit all den verschiedenen Problemen die auftreten rund um kompliziertes Exception-Handling und den Problemen, falls man die darunter liegende Datenbank auswechselt? Genau diesen Problemstellungen möchte sich das Spring Framework widmen. Welchen Ansatz es dabei verfolgt, möchte ich Ihnen im Laufe dieses Videos demonstrieren. Bei der Arbeit mit Spring steht allem voran das sogenannte Data-Access-Objekt. Es ist die zentrale Schnittstelle um auf Daten im Hintergrund zurückzugreifen. Ziel von Spring ist es, zwischen verschiedenen Persistenztypen möglichst einheitliche Zugriffsmechanismen zu bieten. Die unterschiedlichen Persistenz- mechanismen sind beispielsweise JPA und Hibernate, die auch als objektrelationales Mapping funktionieren, oder auch JDBC. Anhand eines einheitlichen Exception-Modells ist es möglich, zwischen verschiedenen Datenbanken auf einheitliche Fehlermeldungen zurückzugreifen, so dass aus Sicht der Anwendung, z. B. das Fehlschlagen von einer Anlage einer Tabelle eine einheitliche Fehlermeldung generiert. Außerdem versucht Spring auch ein einheitliches Modell für den Zugriff auf die Persistenz zu erbieten. Das bedeutet, anhand der sogenannten DataSource kann zwischen den verschiedenen Persistenztypen auf dieselbe Datenbankverbindung zurückgegriffen werden. Besonders für JDBC schafft Spring neue Konzepte. Das Hauptkonzept ist das JdbcTemplate. Es ist die Hauptklasse von Spring JDBC. Man nutzt es um gegen eine Datenbank verschiedene SQL-Statements auszuführen. JdbcTemplate wird dabei von diversen Hilfsklassen unterstützt. Allen voran steht dabei der RowMapper. Dieser ermöglicht es Objekte aus den Resultaten zu erzeugen, so dass die zurückgelieferten Spalten und deren Werte auf entsprechende Objekte gemappt werden können. Ähnlich, aber erweitert, funktioniert der MappingSqlQuery. Er definiert eine Abfrage und auch die Umwandlung auf das entsprechende Objekt Für alle Arten von SQL-Statements gibt es eine entsprechende Spezialisierung wie SqlUpdate, SqlInsert und SqlFunction. Um mehrere Statements auf einmal auszuführen gibt es zusätzlich auch noch Batch-Funktionen wie das BatchSqlUpdate. Damit werden Anweisungen gesammelt und im Batch gegen die Datenbank ausgeführt. Anhand eines Beispiels möchte ich Ihnen zeigen, wie das in der Praxis aussehen kann. Zunächst einmal müssen die korrekten Abhängigkeiten definiert sein. Für die Maven-Datei bedeutet das einerseits das grundsätzliche Core-Framework von Spring und Spring JDBC. Außerdem empfiehlt es sich in diesem Falle eine Datenbank herzuziehen Das kann alternativ eine MySQL, Oracle, oder vieles mehr sein. In dem Fall ist es eine H2-Datenbank. H2 ist nichts weiter als eine Embedded Database für Java, so dass kein separater Server notwendig ist. Die Konfigurationsdatei für Spring in dem Fall enthält einerseits den Component-Scan um die Beans entsprechend zu initialisieren und eine sogenannte dataSource-Bean, die in dem Fall die DriverManagerDataSource darstellt. Grundsätzlich kann die Art der DataSource jederzeit ausgewechselt werden, insofern sie dem Interface entspricht. In dem Fall wäre es auch möglich, die Embedded Database zu nutzen oder auf den jeweiligen JNDI zurückzugreifen der von einem Applikationsserver wie Tomcat oder JBoss bereitgestellt wird. Wichtig ist noch bei der Nutzung von H2 und einem JDBC-String, dass falls alle Verbindungen beendet sind, die Datenbank auch dementsprechend gelöscht wird. Durch diese Angabe bleiben die Daten aber vorhanden, denn der DriverManager startet immer nur eine Verbindung wenn man auch eine Abfrage ausführt. Ansonsten handelt es sich in dem Fall um eine InMemory-Datenbank, die also nicht auf die Festplatte geschrieben wird. Bei der Ausführung der Anwendung wird entsprechend die Konfiguration geladen, das Data-Access-Objekt für das Fahrzeug geladen, zwei Fahrzeuge gespeichert und dementsprechend noch einmal alle Fahrzeuge abgefragt. Wenn man die Anwendung ausführt ist genau das das erwartete Resultat. Konkret in der JdbcCarDataAccessObject wird zunächst einmal die DataSource entgegengenommen um aus der DataSource das JdbcTemplate zu erzeugen. Spezielle Fälle, wie MappingSqlQuery oder BatchSqlUpdate nehmen die DataSource selbst nochmal entgegen und eine jeweilige SQL-Abfrage. Durch Ausführung von configure wird hier eine Tabelle angelegt, die ihren Index auch automatisch erhöht anhand von auto_increment. Auf dem Template ist es nun also möglich direkt eine Query auszuführen und diese auch mithilfe des sogenannten RowMappers auf ein Objekt zu mappen. Alle anderen Mechanismen auf diesem Data-Access-Objekt sind gesteuert von dem BatchSqlUpdate und dem SelectAllCars. Im BatchSqlUpdate werden also nun zwei Parameter definiert, die bereits in der Query definiert sind anhand der Doppelpunkt-Notation. Diese müssen beim Aufruf mitgegeben werden, so dass die Batchabfragen ausgeführt werden können. Die Select-Query definiert auch nur die Abfrage selbst, nimmt die DataSource entgegen und anhand des mapRow wird dementsprechend auf das Objekt "Car" gemappt, so dass aus einer Select-Abfrage automatisch die richtigen Objekte resultieren. Der Mapping-Prozess selbst muss dann noch manuell durchgeführt werden und dementsprechend erhält man dann bei der Ausführung die korrekten Objekte unmittelbar zurück. Was an der Stelle bereits auffällt ist, dass an keiner Stelle verlangt wird Exceptions abzufangen. Man kann frei entscheiden wo und zu welchem Zeitpunkt man diese Exceptions sammeln möchte und erhält entsprechend die Exceptions des Spring Exception-Modells, nicht die der jeweiligen Datenbank. Sie haben also nun Konzepte von Spring für Datenpersistenz kurz und bündig kennengelernt in Zusammenhang mit der Nutzung von JDBC. Zukünftig wissen Sie also, wie Sie deutlich einfacher mit JDBC arbeiten können.

Spring Framework Grundkurs

Steigen sie zum Java-Champion auf und meistern Sie den Umgang mit dem Spring Framework.

2 Std. 4 min (20 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Spring Framework Spring Framework 3
Exklusiv für Abo-Kunden
Ihr(e) Trainer:
Erscheinungsdatum:24.09.2014
Laufzeit:2 Std. 4 min (20 Videos)

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!