Dieses Repository enthält die Materialien für Database Development, das Folgemodul zu Relational Databases an der HFTM.
Der Kurs zeigt, wie relationale Datenbanken in professioneller Softwareentwicklung eingesetzt werden. Im Zentrum steht die Frage:
Wie entwickle ich mit PostgreSQL, Spring Boot, Hibernate/JPA und Flyway eine robuste, wartbare und performante datenbankgestützte Anwendung?
Die konkrete Unterrichtstechnologie ist Spring Boot. Die behandelten Prinzipien bleiben aber bewusst übertragbar: Datenmodellierung, ORM, Migrationen, Transaktionen, Query Design, Performance und Tests.
Ab Block 2 wird ein kleines Spring-Boot-4-Starterprojekt verwendet:
../db-2-app
Das Projekt ist als eigenes Repository beziehungsweise Submodule neben db-2 eingebunden. Nach der Wiederholung trägt es den ganzen zweiten Block: Die Studierenden klären zuerst, warum ein ORM in der Entwicklung hilft und warum JPA/Hibernate im Java-/Spring-Umfeld verwendet wird. Danach prüfen sie die Spring-Boot-Einrichtung über pom.xml, application.yml, Entity Mapping und Repositories. Im nächsten Schritt wird Flyway als Migrationswerkzeug im selben Projekt vertieft. Zum Abschluss lesen sie die High-Level-Architektur von db-2-app mit Controller, Service, Repository, Mapper, Entity und PostgreSQL.
Der rote Faden von Block 2 lautet:
Warum ORM? -> Warum JPA/Hibernate? -> Warum Flyway-Migrationen? -> Wie arbeitet db-2-app?
Das Starterprojekt bleibt dabei bewusst unvollständig. Die Studierenden müssen zentrale Datenbanklogik wie Pflichtfelder, Constraints und Repository-Entscheide selbst entwickeln und begründen. Bereits gelaufene Flyway-Migrationen werden nicht nachträglich angepasst; Verbesserungen entstehen als neue Migrationen.
Alle Materialien arbeiten mit einem Ticket-System für internen Support. Die Fallstudie ist klein genug für Unterrichtslektionen und reich genug für typische Datenbankentwicklungsfragen:
- Benutzer, Teams und Zuständigkeiten
- Tickets mit Status, Priorität und Verantwortlichen
- Kommentare und Ereignisverlauf
- Labels und n:m-Beziehungen
- Reporting-Abfragen, Transaktionen, Migrationen und Performance-Fragen
docs/- Lehrbuch im MyST/Jupyter-Book-Formatslides/- Marp-Folien mit HFTM-Themeplanning/- Unterrichtsplanungexercises/- Diagnose- und Übungsaufgabenpostgres/- PostgreSQL-Container, Schema und Testdaten
- Python 3.12+
- Poetry
- Node.js 18+
- Docker oder Podman
poetry install
cd docs
jupyter book build --siteMit aktivierter Poetry-Umgebung kannst du alternativ aus dem Projektroot bauen:
npm run docs:buildHinweis: jupyter book build . funktioniert mit dem MyST-basierten Jupyter-Book-CLI nicht, weil . als Dateiargument interpretiert wird.
npm install
npm run slides:serveDie Folien werden standardmässig auf Port 5002 bereitgestellt.
cd postgres
docker compose up --buildVerbindungsdaten:
- Host:
localhost - Port:
5433 - Datenbank:
ticket_system - Benutzer:
ticket_user - Passwort:
ticket_user
Das Container-Image wird über GitHub Actions als ghcr.io/erhardtconsulting/database-development:ticket-system-17.9 gebaut.
Dieses Werk steht unter der Creative Commons Attribution-ShareAlike 4.0 International License (CC-BY-SA 4.0).