Kursinhalt
Java-Datenmanipulation mit Hibernate
Java-Datenmanipulation mit Hibernate
JDBC API-Komponenten
Komponenten von JDBC
Jede API besteht aus Komponenten, die jeweils für einen Teil der Funktionalität der API verantwortlich sind. Diese Struktur kann auch mit einer Produktionslinie verglichen werden, bei der jeder Mitarbeiter eine Rolle in jedem Prozess hat.
Zum Beispiel können wir die Prozesse logisch in mehrere Unterprozesse unterteilen:
- Eine Verbindung zur Datenbank herstellen;
- Eine SQL-Abfrage an die Datenbank senden;
- Daten empfangen in Form einer Antwort;
- Diese Daten richtig interpretieren, indem sie an Java-Code angepasst werden;
- Die Daten in eine bequemere Datenstruktur umwandeln (z.B. eine Liste, Sammlung oder Karte).
Für jeden dieser Prozesse gibt es eine entsprechende Komponente, die für die erfolgreiche Ausführung ihrer Anweisungen verantwortlich ist. Lassen Sie uns diese Komponenten im Detail kennenlernen:
- Connection: Dieses Interface stellt eine Verbindung zur Datenbank her. Sie verwenden es, um Instanzen von
Statement
oderPreparedStatement
zu erstellen; - Statement und PreparedStatement: Diese Schnittstellen werden verwendet, um SQL-Abfragen auszuführen.
Statement
wird für die Ausführung von statischen SQL-Abfragen ohne Parameter verwendet, währendPreparedStatement
für die Ausführung von SQL-Abfragen mit einem oder mehreren Parametern konzipiert ist; - ResultSet: Wenn Sie eine SQL-Abfrage zur Datenabfrage (
SELECT
) ausführen, speichert dasResultSet
die abgerufenen Daten, sodass Sie jede Zeile des Ergebnisses nacheinander verarbeiten können; - DriverManager: Diese Klasse verwaltet eine Liste von verfügbaren JDBC-Treibern. Sie wählt den geeigneten Treiber aus, wenn eine Verbindung zur Datenbank hergestellt wird.
Daraus können wir eine Schlussfolgerung darüber ziehen, wie die Verantwortlichkeiten im Code verteilt sind:
- Die Klassen
DriverManager
undConnection
führen den ersten Prozess durch: Eine Verbindung zur Datenbank herstellen. DerDriverManager
wählt den geeigneten Treiber für das spezifische DBMS aus, und dieConnection
verwendet diesen Treiber, um den Code mit der Datenbank zu verbinden; Statement
undPreparedStatement
übernehmen den zweiten Prozess, da sie es uns ermöglichen, SQL-Abfragen an die Datenbank zu senden und der Datenbank mitzuteilen, welche Daten wir abrufen möchten;ResultSet
übernimmt die verbleibenden Prozesse. Mit Hilfe dieser Klasse und ihrer Methoden können wir die Daten in einem für uns geeigneten Format, wie einerList
, erhalten.
So können wir sehen, dass jede der Komponenten ihren Zweck erfüllt. Diese Struktur ist korrekt und hält sich an die SOLID-Prinzipien.
Hinweis
Wir werden die SOLID-Prinzipien in einem separaten Kurs besprechen. Diese Prinzipien definieren gut geschriebenen Anwendungscode, indem sie Richtlinien für das korrekte Schreiben von Code bereitstellen.
JDBC-Interaktion mit einer Datenbank
Lassen Sie uns die Interaktion von JDBC mit einer Datenbank durch Code-Beispiele untersuchen.
Es mag anfangs kompliziert erscheinen, aber im Laufe des Kurses, insbesondere bei der Bearbeitung praktischer Aufgaben, werden Sie ein besseres Verständnis dafür gewinnen, wie es funktioniert und was getan werden muss.
Zunächst einmal sehen wir uns an, wie die Datenbank aussieht, mit der wir arbeiten und zu der wir eine Verbindung herstellen werden. Wir arbeiten mit dem testDatabase
-Schema und der employees
-Tabelle:
Eine ziemlich einfache Tabelle in der Datenbank. Nun setzen wir uns die Aufgabe, Daten wie id
, name
und salary
aus der ersten Zeile der Tabelle (id=1) abzurufen:
Hinweis
Sie finden Anweisungen zur richtigen Konfiguration von MySQL und zum Abrufen des
db_username
unddb_password
hier: Artikel.
Gehen wir es Schritt für Schritt durch:
Schritt | Aktion | Beschreibung |
---|---|---|
1 | Variablenerstellung | Erstellen Sie String -Variablen, um die Datenbank-URL zu speichern (die den Datenbanknamen enthält, was dem SQL-Befehl USE DatabaseName entspricht), den MySQL-Benutzernamen und das Passwort des Benutzers. Details sind aus Datenschutzgründen verborgen. |
2 | Verbindungsherstellung | Verwenden Sie das Connection -Interface und die DriverManager -Klasse, um eine Datenbankverbindung herzustellen. Dies beinhaltet das Aufrufen der Methode getConnection() mit der Datenbank-URL, dem Benutzernamen und dem Passwort als Parameter, wodurch eine Verbindung zum Senden von SQL-Abfragen hergestellt wird. |
3 | Vorbereitung der Anweisung | Verwenden Sie die Methode prepareStatement() für das Verbindungsobjekt und weisen Sie das resultierende vorbereitete Anweisungsobjekt einer Variablen zu. Dieses Objekt enthält die im Parameter der Methode angegebene SQL-Abfrage. |
4 | Ausführen der Abfrage | Verwenden Sie die Methode executeQuery() für das vorbereitete Anweisungsobjekt und weisen Sie die Ergebnisse einem ResultSet -Objekt zu. Dieses Objekt enthält nun die Ergebnisse der ausgeführten SQL-Abfrage. |
5 | Datenabruf | Überprüfen Sie mit der Methode next() auf Daten im resultSet . Wenn Daten vorhanden sind, werden Variablen erstellt und Werte aus der ersten Zeile der Tabelle zugewiesen. Die Methode next() positioniert uns zunächst in der 1. Zeile der Tabelle und wird erneut verwendet, um zu nachfolgenden Zeilen zu wechseln. |
6 | Werte zuweisen | Weisen Sie Variablen Werte zu, indem Sie auf Spaltennamen wie id , name und salary verweisen. Werte werden aus der ERSTEN Zeile der Tabelle entnommen, wobei der Vorgang bei Bedarf für zusätzliche Zeilen mit der Methode next() wiederholt wird. |
Die Ausgabe sieht folgendermaßen aus:
Wenn wir alle Elemente auf dem Bildschirm anzeigen möchten, müssen wir die if
-Bedingung in eine while
-Schleife ändern, damit wir jedes Element verarbeiten.
Es wird so aussehen:
Ausgabe:
Fazit
Für jede Interaktion mit einer Datenbank unter Verwendung von JDBC wird derselbe Algorithmus verwendet, wie im obigen Beispiel gezeigt. Wir werden diesen genauen Algorithmus nicht häufig verwenden, da wir Hibernate verwenden werden, um mit der Datenbank zu interagieren, aber es ist wichtig, dass jeder sich dieser Methode der Datenbankinteraktion bereitgestellt durch das JDK bewusst ist.
1. Was ist die Hauptfunktion des Connection
-Interfaces in JDBC?
2. Welche der folgenden Aussagen beschreibt das PreparedStatement
in JDBC am besten?
3. Was ist die Rolle des DriverManager
in JDBC?
4. Welches JDBC-Komponente ist verantwortlich für das Speichern und Verarbeiten von Daten, die mit einer SQL-Abfrage aus einer Datenbank abgerufen wurden?
Danke für Ihr Feedback!