Rheinwerk Computing < openbook >


 
Inhaltsverzeichnis
Materialien
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Arrays und ihre Anwendungen
5 Der Umgang mit Zeichenketten
6 Eigene Klassen schreiben
7 Objektorientierte Beziehungsfragen
8 Ausnahmen müssen sein
9 Geschachtelte Typen
10 Besondere Typen der Java SE
11 Generics<T>
12 Lambda-Ausdrücke und funktionale Programmierung
13 Architektur, Design und angewandte Objektorientierung
14 Java Platform Module System
15 Die Klassenbibliothek
16 Einführung in die nebenläufige Programmierung
17 Einführung in Datenstrukturen und Algorithmen
18 Einführung in grafische Oberflächen
19 Einführung in Dateien und Datenströme
20 Einführung ins Datenbankmanagement mit JDBC
21 Bits und Bytes, Mathematisches und Geld
22 Testen mit JUnit
23 Die Werkzeuge des JDK
A Java SE-Module und Paketübersicht
Stichwortverzeichnis


Download:

- Listings, ca. 2,7 MB


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 20 Einführung ins Datenbankmanagement mit JDBC
Pfeil 20.1 Relationale Datenbanken und Java-Zugriffe
Pfeil 20.1.1 Das relationale Modell
Pfeil 20.1.2 Java-APIs zum Zugriff auf relationale Datenbanken
Pfeil 20.1.3 Die JDBC-API und Implementierungen: JDBC-Treiber
Pfeil 20.1.4 H2 ist das Werkzeug auf der Insel
Pfeil 20.2 Eine Beispielabfrage
Pfeil 20.2.1 Schritte zur Datenbankabfrage
Pfeil 20.2.2 Mit Java auf die relationale Datenbank zugreifen
Pfeil 20.3 Zum Weiterlesen
 

Zum Seitenanfang

20    Einführung ins Datenbankmanagement mit JDBC Zur vorigen ÜberschriftZur nächsten Überschrift

»Was kann gespeichert werden? Alles, was Sie gerne extrahieren möchten.«

– NSA-Präsentation zum System XKeyscore (2008)

Das Sammeln und Zugreifen auf und das Verwalten von Informationen ist im »Informationszeitalter« für die Wirtschaft eine der zentralen Säulen. Während früher Informationen auf Papier gebracht wurden, bietet die EDV hierfür Datenbanken. Sie werden von einem Datenbankmanagementsystem, kurz DBMS, verwaltet.

Ein Datenbankmodell bestimmt die Struktur, in der die Datenbasis, also Informationseinheiten, in Beziehung stehen und organisiert werden. Es gibt unterschiedliche Modelle, wobei das relationale Modell, das auf Tabellen basiert, am häufigsten vorkommt. Neben relationalen Datenbanken gibt es weitere Typen, wie dokumentenorientierte Datenbanken, Graphdatenbanken und Schlüssel-Werte-Datenbanken. Sie werden im Allgemeinen unter dem Begriff NoSQL-Datenbanken zusammengefasst. Für Java gibt es APIs für alle Arten von Datenbanken.

 

Zum Seitenanfang

20.1    Relationale Datenbanken und Java-Zugriffe Zur vorigen ÜberschriftZur nächsten Überschrift

Relationale Datenbanken gibt es seit den 1970er-Jahren. Die theoretischen Grundlagen wurden von Edgar F. Codd schon in den 1960er-Jahren gelegt.

 

Zum Seitenanfang

20.1.1    Das relationale Modell Zur vorigen ÜberschriftZur nächsten Überschrift

Die Grundlage für relationale Datenbanken sind Tabellen (auch Relationen genannt) mit ihren Spalten und Zeilen, die sogenannten Entitäten Eigenschaften zuweisen. In der Vertikalen sind die Spalten und in der Horizontalen die Zeilen angegeben. Eine Zeile (auch Tupel genannt) entspricht einem Eintrag einer Tabelle, eine Spalte (auch Attribut genannt) einem Element einer Tabelle.

ID

Name

Adresse

Wohnort

004

Hoven G. H.

Sandweg 50

Linz

009

Baumgarten R.

Tankstraße 23

Hannover

011

Strauch GmbH

Beerenweg 34a

Linz

013

Spitzmann

Hintergarten 9

Aalen

Tabelle 20.1    Eine Beispieltabelle

Jede Tabelle entspricht einer logischen Sicht des Benutzers. Die Zeilen einer Relation stellen die Datenbankausprägung dar, während das Datenbankschema die Struktur der Tabellen – also Anzahl, Name und Typ der Spalten – beschreibt.

Wenn wir nun auf diese Tabellen Zugriff erhalten wollen, um damit die Datenbankausprägung zu erfahren, benötigen wir Abfragemöglichkeiten.

 

Zum Seitenanfang

20.1.2    Java-APIs zum Zugriff auf relationale Datenbanken Zur vorigen ÜberschriftZur nächsten Überschrift

Steht auf der einen Seite das Datenbanksystem, so steht auf der anderen Seite unser Java-Programm und möchte auf die Daten zugreifen. Gewünscht ist eine einheitliche Programmierschnittstelle, sodass die Funktionen unterschiedlicher Datenbanken in gleicher Weise genutzt werden können.

Hier gibt es unterschiedliche APIs auf unterschiedlichen Ebenen. Auf der untersten Ebene stehen:

  • JDBC (inoffizielle Abkürzung für Java Database Connectivity)

  • R2DBC (Reactive Relational Database Connectivity)

JDBC und R2DBC abstrahieren von den relationalen Datenbanken durch eine API. Dadurch müssen Entwickler nicht verschiedene Zugriffsmethoden für die Datenbanken diverser Hersteller lernen. Java-Entwickler bekommen auf diese Weise Methoden an die Hand, die Verbindungen zu Datenbanken aufbauen, Datensätze lesen oder neue Datensätze verfassen. Zusätzlich können Tabellen aktualisiert und Prozeduren auf der Serverseite ausgeführt werden.

Aufbauend darauf gibt es abstraktere APIs wie JPA oder jOOQ, mit denen der Zugriff komfortabler und weniger fehleranfällig ist. R2DBS ist ein sehr neuer Standard, auf den wir nicht näher eingehen. Auch JPA wird hier nicht betrachtet.

 

Zum Seitenanfang

20.1.3    Die JDBC-API und Implementierungen: JDBC-Treiber Zur vorigen ÜberschriftZur nächsten Überschrift

JDBC bezeichnet einen Satz von Schnittstellen, mit denen man relationale Datenbanksysteme aus Java heraus ansprechen kann. Die API ist seit 20 Jahren Teil der Standard-API und die Typen verteilen sich auf die Pakete java.sql und javax.sql.

Um eine Datenbank über JDBC ansprechen zu können, müssen wir einen Treiber haben, der die JDBC-API implementiert und zwischen dem Java-Programm und der Datenbank vermittelt. Jeder Treiber ist üblicherweise anders implementiert, denn er muss die datenbankunabhängige JDBC-API auf die konkrete Datenbank übertragen. Jede Datenbank hat ihr eigenes Protokoll (und eventuell auch Netzwerkprotokoll), doch die Implementierung ist nur dem Datenbanktreiber bekannt.

JDBC bietet den Vorteil, dass der Zugriff auf die Datenbanken immer gleich aussieht, und jede relationale Datenbank von Java angesprochen werden kann. Nur ein entsprechender Treiber ist nötig. Die Hersteller von DBMS liefern in der Regel selbst einen JDBC-Treiber mit aus, den wir als JAR-Datei in den Modulpfad mit aufnehmen. Eine Suchmaschine hilft hier schnell weiter. Mit dem richtigen Treiber lassen sich selbst CSV-Dateien (siehe http://csvjdbc.sourceforge.net/) oder Excel (siehe https://sourceforge.net/projects/xlsql/) über JDBC ansprechen.

 

Zum Seitenanfang

20.1.4    H2 ist das Werkzeug auf der Insel Zur vorigen ÜberschriftZur nächsten Überschrift

Bevor wir mit Java eine Datenbank ansprechen können, steht die Inbetriebnahme des Datenbanksystems an (für dieses Kapitel ist das fast schon der schwierigste Teil). Nun gibt es eine große Anzahl von kommerziellen, freien und quelloffenen Datenbankmanagementsystemen, sodass sich dieses Tutorial der Einfachheit halber auf H2 beschränkt.

Die H2-Datenbank

Die Beispielabfrage aus Abschnitt 20.2 basiert auf H2 (http://www.h2database.com), da das DBMS so schön einfach ist und auch ohne Administratorrechte auskommt. H2 ist alleinstehend oder eingebettet lauffähig und verfügt über schöne Features. H2 hat eine Weboberfläche zur Konfiguration und für Abfragen und unterstützt alle wichtigen SQL-Eigenschaften wie Trigger und Joins sowie abgesicherte Verbindungen und die Volltextsuche. H2 hält außerdem den Speicherverbrauch klein. Außerdem lässt sich ein ODBC-Treiber (von PostgreSQL) nutzen, um H2 auch unter Windows-Programmen (etwa Access) als Datenbank zu nutzen.

Da JDBC von Datenbanken abstrahiert, ist der Java-Programmcode prinzipiell auf jeder Datenbank lauffähig und die Leser können gerne andere Datenbanken einsetzen.

Die H2-Datenbank und JDBC-Treiber

Bei H2 sind das Datenbankmanagementsystem und der Treiber zusammen in nur einem Java-Archiv gebündelt. Wir können also gut eine Dependency in unserer Maven-POM-Datei eintragen und H2 referenzieren:

Listing 20.1    pom.xml, Ergänzung

<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->

<dependency>

<groupId>com.h2database</groupId>

<artifactId>h2</artifactId>

<version>1.4.200</version>

</dependency>

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java ist auch eine Insel Java ist auch eine Insel

Jetzt Buch bestellen


 Buchempfehlungen
Zum Rheinwerk-Shop: Captain CiaoCiao erobert Java

Captain CiaoCiao erobert Java




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Objektorientierte Programmierung

Objektorientierte Programmierung




 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2021

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.

Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de



Cookie-Einstellungen ändern