Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:ffit:3-jahr:java:learningunits:lu02:main [2025/08/26 09:29] – apeter | de:modul:ffit:3-jahr:java:learningunits:lu02:main [2025/08/29 12:24] (aktuell) – apeter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== LU02a - Funktionale Implementationen 1 ====== | + | ====== LU02a - Konsoleneingabe |
| ==== Main-Methode ==== | ==== Main-Methode ==== | ||
| Zeile 37: | Zeile 37: | ||
| git log | git log | ||
| git checkout main | git checkout main | ||
| - | < | ||
| - | |||
| - | |||
| - | ==== Objekte ==== | ||
| - | |||
| - | **Anforderung 2**: Eine Bibliotheksapplikation soll die vorhanden Bücher mit dem Befehl '' | ||
| - | |||
| - | Dazu braucht es erstmal eine Klasse '' | ||
| - | |||
| - | ^id ^isbn ^title ^author ^year | | ||
| - | |1|978-3-8362-9544-4|Java ist auch eine Insel|Christian Ullenboom|2023| | ||
| - | |2|978-3-658-43573-8|Grundkurs Java|Dietmar Abts|2024| | ||
| - | |||
| - | Machen Sie einen Cherry-Pick des Commits '' | ||
| - | |||
| - | ==== Persistierung ==== | ||
| - | |||
| - | 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. | ||
| - | |||
| - | <code bash> | ||
| - | psql -U localuser -d localdb | ||
| </ | </ | ||
| - | |||
| - | <code sql> | ||
| - | 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 | ||
| - | ); | ||
| - | </ | ||
| - | |||
| - | <code sql> | ||
| - | INSERT INTO books (isbn, title, author, publication_year) | ||
| - | VALUES | ||
| - | (' | ||
| - | (' | ||
| - | </ | ||
| - | |||
| - | Mit '' | ||
| - | <code sql> | ||
| - | \quit | ||
| - | </ | ||
| - | |||
| - | |||
| - | Für den Zugang zu einer Datenbank verwenden wir JDBC (Java Data-Base Connectivity). | ||
| - | * https:// | ||
| - | |||
| - | Anstatt der Maven-Dependency muss die Dependency in '' | ||
| - | |||
| - | <code gradle> | ||
| - | dependencies { | ||
| - | // dependencies for the application | ||
| - | implementation ' | ||
| - | |||
| - | // dependencies for testing | ||
| - | testImplementation ' | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | 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 ('' | ||
| - | |||
| - | <code sql> | ||
| - | SELECT id, isbn, title, author, publication_year FROM books | ||
| - | </ | ||
| - | |||
| - | Führen Sie die Tests aus und korrigieren Sie ihre Implementation falls nötig. | ||
| - | |||
| - | ==== Konfigurationsvariabeln ==== | ||
| - | URLs, Benutzernamen und Passwörter sollten nicht hartcodiert werden, da sonst jeder mit Read-Rechten die Zugangsdaten lesen und somit auf die Datenbank zugreifen kann. | ||
| - | |||
| - | Es gibt verschiedene Arten, um solche Variabeln einzulesen, wie zum Beispiel: Command-line Argumente, System Properties, eine '' | ||
| - | |||
| - | Für native Java eignet sich '' | ||
| - | * https:// | ||
| - | |||
| - | - Erstellen Sie die Datei '' | ||
| - | - Initialisieren Sie ein '' | ||
| - | - Laden Sie die Datei aus dem Root-Verzeichnis: | ||
| - | - Holen Sie die Werte der Konfigurationen von '' | ||
| - | |||
| - | '' | ||
| - | |||
| - | Führen Sie die Tests erneut aus und korrigieren Sie ihre Implementation falls nötig. | ||
| - | |||
| - | Für die Pipeline wird eine separate Testdatenbank benötigt. Studieren Sie die Ergänzungen der Pipeline und die beiden SQL-Dateien, | ||
| - | |||
| - | ==== I/O ==== | ||
| - | |||
| - | Stellen Sie sich vor, dass die Betreiber einer Bibliothek bisher eine Excel-Datei für die Verwaltung der Bücher genutzt haben 😉. | ||
| - | |||
| - | Anstatt alle darin enthaltenen Bücher abzutippen und manuell in die Datenbank einzutragen, | ||
| - | |||
| - | **Anforderung 3**: Mit dem Befehl '' | ||
| - | |||
| - | - Erweitern Sie die Befehlslogik, | ||
| - | - Schreiben Sie die Logik, um die Datei ohne zusätzliche Dependencies einzulesen und eine '' | ||
| - | - Speichern Sie die resultierende Liste in die Datenbank. Einträge mit derselben '' | ||
| - | - Importieren Sie die Datei '' | ||
| - | - Überprüfen Sie die Anforderung mit den Tests im Commit '' | ||
| - | |||
| - | ==== Weitere Anpassungen (optional) ==== | ||
| - | **Change request 2.1**: Damit '' | ||
| - | |||