Dies ist eine alte Version des Dokuments!


LU02b - Funktionale Implementationen 2

Anforderung 2: Eine Bibliotheksapplikation soll die vorhanden Bücher mit dem Befehl listBooks auflisten können.

Dazu braucht es erstmal eine Klasse Book. Erstellen Sie die Klasse und die folgenden beiden Objekte als Konstanten. Beim Befehl listBooks sollen diese beiden Bücher je ein Buch(mindestens der Titel) pro Zeile ausgegeben werden.

id isbn title author year
1978-3-8362-9544-4Java ist auch eine InselChristian Ullenboom2023
2978-3-658-43573-8Grundkurs JavaDietmar Abts2024

Zur Erinnerung wie eine Konstante aufgebaut ist:

private static final Book BOOK_1 = new Book(...);

Machen Sie einen Cherry-Pick des Commits 1766cfc, um die Tests für diesen Implementationsschritt zu erhalten. Führen Sie die Tests aus und korrigieren Sie ihre Implementation falls nötig.

Anstatt die Bücher nur hardcodiert in der Applikation zu haben, soll die PostgreSQL-Datenbank verwendet werden.

Loggen Sie sich mit folgendem Befehl bei der Datenbank an und setzen Sie nachfolgende SQL-Statements ab, um einige Beispieleinträge zu erfassen.

psql -U localuser -d localdb
CREATE TABLE books (
    id SERIAL PRIMARY KEY,
    isbn VARCHAR(20) NOT NULL,
    title VARCHAR(255) NOT NULL,
    author VARCHAR(255) NOT NULL,
    publication_year INT
);
INSERT INTO books (isbn, title, author, publication_year)
VALUES 
    ('978-0134685991', 'Effective Java', 'Joshua Bloch', 2018),
    ('978-0596009205', 'Head First Java', 'Kathy Sierra, Bert Bates', 2005);

Mit \quit können Sie sich übrigens wieder von PostgreSQL abmelden.

\quit

Für den Zugang zu einer Datenbank verwenden wir JDBC (Java Data-Base Connectivity).

Anstatt der Maven-Dependency muss die Dependency in build.gradle eingetragen werden. Sie erhalten automatisch die nachfolgende Liste, wenn Sie den Commits 23e74a3 cherry-picken.

dependencies {
    // dependencies for the application
    implementation 'org.postgresql:postgresql:42.7.3'
 
    // dependencies for testing
    testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2'
}

Implementieren Sie eine Methode, die eine Datenbankverbindung aufbaut, folgende Abfrage macht und für jeden zurückgelieferten Eintrag ein Book-Objekt erstellt. Die Methode soll dann eine Liste (java.util.List) der Buch-Objekte zurückgeben.

SELECT id, isbn, title, author, publication_year FROM books

Führen Sie die Tests aus und korrigieren Sie ihre Implementation falls nötig.

  • de/modul/ffit/3-jahr/java/learningunits/lu02/b.1756462876.txt.gz
  • Zuletzt geändert: 2025/08/29 12:21
  • von apeter