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/25 13:11] – apeter | de:modul:ffit:3-jahr:java:learningunits:lu02:main [2025/08/29 12:24] (aktuell) – apeter | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== LU02a - Grundlagen | + | ====== LU02a - Konsoleneingabe |
==== Main-Methode ==== | ==== Main-Methode ==== | ||
Zeile 12: | Zeile 12: | ||
Das String-Array '' | Das String-Array '' | ||
- | Erstellen Sie ein Fork-Repository von https:// | + | Erstellen Sie ein Fork-Repository |
Klonen Sie anschliessend ihr eigenes Repository, um die Basisstruktur für die LibraryApp zu erhalten, welche Sie in den kommenden Kapiteln implementieren werden. | Klonen Sie anschliessend ihr eigenes Repository, um die Basisstruktur für die LibraryApp zu erhalten, welche Sie in den kommenden Kapiteln implementieren werden. | ||
Zeile 21: | Zeile 21: | ||
Nutzen Sie die Klasse '' | Nutzen Sie die Klasse '' | ||
+ | * https:// | ||
* https:// | * https:// | ||
Zeile 29: | Zeile 30: | ||
Überlegen Sie sich vor der Implementation, | Überlegen Sie sich vor der Implementation, | ||
- | Machen Sie einen Cherry-Pick des Commits '' | + | Machen Sie einen Cherry-Pick des Commits '' |
- | + | ||
- | ==== 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. | + | |
+ | Sollte die Fehlermeldung '' | ||
<code bash> | <code bash> | ||
- | psql -U localuser -d localdb | + | git checkout tests |
+ | git log | ||
+ | git checkout main | ||
</ | </ | ||
- | |||
- | <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 '' | ||
- | |||
- | |||
- | Tests ausführen... | ||