Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- == Aufgabe 1
- Zuerst haben wir ein Docker Compose File erstellt, um die Datenbank starten zukönnen
- [source,yaml]
- ----
- version: "3.7"
- services:
- db:
- image: mysql
- environment:
- MYSQL_ROOT_PASSWORD: root
- MYSQL_DATABASE: Ziegel24
- ports:
- - "3306:3306"
- ----
- Die Entitäten und Beziehungen waren bereits im Code (im Verzeichniss *database*) vollständig und vernünftig modelliert.
- Um die Verbindung mit der Datenbank einzustellen und Hibernate die Tabellen anlegen zu lassen, haben wir in *application.properties* folgendes hinzugefügt:
- [source,properties]
- ----
- spring.jpa.hibernate.ddl-auto=update
- spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/Ziegel24
- spring.datasource.username=root
- spring.datasource.password=root
- ----
- Danch haben wir mit Hilfe der _MySQL Workbench_ die Daten aus .csv-Dateien in folgender Reihenfolge importiert: `kunde`, `bestellung`, `produkt`, `position`.
- Die Reihenfolge ist wichtig, denn von zwei an einer Beziehung beteilegten Entities immer zuerst die Entität importiert werden soll, die den Fremdschlüssel [underline]#nicht# enthält.
- Beim Importieren der `produkt`-Daten ist es uns aufgefallen, dass die Spalte `beschreibung` länger als `255` Zeichen sein soll (ein Standardwert). Das haben wir durch Hinzufügen der Annotation `@Size(max = 4000)` zum entsprächendem Feld erreicht.
- Beim Importieren der `position`-Daten gab es ein kleines Problem: die Zeile mit `id=0` wurde ignoriert. Diese Zeile haben wir wie folgt hineinbekommen:
- [source,sql]
- ----
- insert into position (id,bestellung_id,anzahl,produkt_id)
- values (-1,1,4000,29)
- ;
- update position
- set id = 0
- where id = -1
- ;
- ----
- Zwei Befehle sind notwendig, weil eine `0` für Spalte `id` auf einen automatisch generierten Wert gesetzt wird.
- Danach haben wir dürch _MySQL Workbench_ die komplette Datenbasis als SQL Skript exportiert. Um dieses als Seed nutzen zu können haben wir den Docker Compose File wie folgt modifiziert:
- [source,yaml]
- ----
- version: "3.7"
- services:
- db:
- image: mysql
- volumes:
- - ./mysql/db/entrypoint:/docker-entrypoint-initdb.d/
- - ./mysql/db/config.cnf:/etc/mysql/conf.d/config.cnf
- environment:
- MYSQL_ROOT_PASSWORD: root
- MYSQL_DATABASE: Ziegel24
- ports:
- - "3306:3306"
- ----
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement