Implementierung von DbUtils

In Listing A werden Daten aus der Student-Tabelle abgerufen und den Anforderungen entsprechend angepasst. Obwohl JDBC eingesetzt wird, muss kaum JDBC-Code geschrieben werden. (Eventuell muss die in dem Beispiel angegebene Benutzername-/Passwort-Kombination entsprechend der spezifischen Datenbank-Konfiguration angepasst werden.)

Dieser Code erfordert die folgenden Schritte:

  1. Die JDBC-Treiberklasse laden und mithilfe des DriverManager eine Datenbank-Verbindung erstellen.
  2. Die QueryRunner-Klasse instanziieren.
  3. Die query-Methode für die Verbindung, die SQL-Abfrage, die Parameter und den ResultSetHandler als Eingabe verwenden. Es wird ein org.apache.commons.dbutils.handlers.MapListHandler benutzt. Ein MapListHandler verarbeitet ein ResultSet und gibt eine java.util.List aus java.util.Map-Instanzen zurück. Daher wird jede Zeile im ResultSet eine java.util.Map, wobei all diese java.util.Map-Instanzen in einer java.util.List zusammengefasst werden.
  4. Die Liste durchgehen und dabei die Werte aus jeder Map in der Liste entnehmen.
  5. Mit dem QueryRunner eine Methode ausführen, die keine Parameter verwendet. Hierzu wird der BeanListHandler verwendet, der ein besonders praktischer ResultSetHandler ist, da man das ResultSet in eine Liste zu einem spezifischen Bean umwandeln kann. Hier gibt man die als StudentBean vorgesehene Bean-Klasse an, wie Listing B zeigt.
  6. Die Liste der gefundenen Beans durchgehen und Werte aus jeder Instanz von StudentBean entnehmen.

HINWEIS: In Listing B musste die StudId in der StudentBean-Klasse int lauten, da der Typ der StudId-Spalte in der Student-Tabelle int ist. Diese Typ-Anpassung ist die einzige Regel, die zu beachten ist.

Da in diesem Fall die Eigenschaften der StudentBean-Klasse und die Felder der Student-Tabelle perfekt angepasst wurden, genügte die Angabe der StudentBean-Klasse als Parameter. Der Feld-Wert wird mit demselben Namen wie die Feldnamen in die Eigenschaften eingefügt. Wenn man dagegen die Erstellung des Beans stärker kontrollieren will, bietet die BeanListHandler-Klasse hierfür einen zweiten Konstruktor: BeanListHandler(java.lang.Class type, RowProcessor convert). Implementierungen der RowProcessor-Schnittstelle konvertieren Zeilen im ResultSet in Objekte. Im Falle des StudentBean wurde die BasicRowProcessor-Implementierung von RowProcessor benutzt, die mit der Aufgabe gut zurechtkam. Man kann jedoch auch eine neue Implementierung schreiben und diese für den BeanListHandler-Konstruktor bereitstellen.

Die Ausgabe nach Ausführung des Codes hängt natürlich davon ab, welche Daten sich in der Student-Tabelle befinden. In diesem Fall entstand die folgende Ausgabe:

Neben den bereits vorgestellten Klassen sollte man sich auch die folgenden Klassen einmal ansehen:

  • org.apache.commons.dbutils.QueryLoader: QueryLoader ist eine einfache Klasse, die Abfragen aus einer Datei in eine Map lädt. Die Abfragen werden dann bei Bedarf aus der Map entnommen. In einer Datei befindliche Abfragen ermöglichen außerdem eine einfache Durchführung von Änderungen, ohne dafür den Code bearbeiten zu müssen.
  • org.apache.commons.dbutils.wrappers.SqlNullCheckedResultSet: Diese Klasse kann als systematische Vorgehensweise zur Handhabung von Null-Werten dienen. Man verpackt ein normales ResultSet mit einer Instanz des SqlNullCheckedResultSet und legt dann fest, was im Falle von Null-Werten geschehen soll.
  • org.apache.commons.dbutils.wrappers.StringTrimmedResultSet: Man verpackt ein ResultSet mit dem StringTrimmedResultSet und kann dadurch alle von den Methoden getString() und getObject() zurückgegebenen Strings abgleichen.

Die DbUtils-Komponente ist praktisch, kompakt und bietet zahlreiche Optionen, die sie zu einem nützlichen Hilfsmittel für alle Projekte machen, in denen JDBC verwendet wird.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Sicherheitslücken in Überwachungskameras und Video-Babyphones

Schwachstellen aus der ThroughTek Kaylay-IoT-Plattform. Dringend Update-Status der IoT-Geräte prüfen.

6 Tagen ago

AWS investiert Milliarden in Cloud-Standort Brandenburg

Fast acht Milliarden Euro fließen in die deutsche Region der AWS European Sovereign Cloud. Das…

6 Tagen ago

DSL oder Kabel – Welcher Anschluss passt zu Ihnen?

Internet in den eigenen vier Wänden ist heutzutage nicht mehr wegzudenken. Denn egal, ob Homeoffice…

6 Tagen ago

Hochsichere Software für Electronic Knee Boards der Bundeswehrpiloten

Im Rahmen der umfassenden Digitalisierung der Bundeswehr ersetzen Electronic Knee Boards die herkömmlichen Handbücher von…

6 Tagen ago

Mai-Patchday: Microsoft schließt zwei aktiv ausgenutzte Zero-Day-Lücken

Sie betreffen Windows 10, 11 und Windows Server. In SharePoint Server steckt zudem eine kritische…

6 Tagen ago

Firefox 126 erschwert Tracking und stopft Sicherheitslöcher

Mozilla verteilt insgesamt 16 Patches für Firefox 125 und älter. Zudem entfernt der Browser nun…

7 Tagen ago