Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. == Aufgabe 1
  2.  
  3. Zuerst haben wir ein Docker Compose File erstellt, um die Datenbank starten zukönnen
  4. [source,yaml]
  5. ----
  6. version: "3.7"
  7. services:
  8. db:
  9. image: mysql
  10. environment:
  11. MYSQL_ROOT_PASSWORD: root
  12. MYSQL_DATABASE: Ziegel24
  13. ports:
  14. - "3306:3306"
  15. ----
  16.  
  17. Die Entitäten und Beziehungen waren bereits im Code (im Verzeichniss *database*) vollständig und vernünftig modelliert.
  18. Um die Verbindung mit der Datenbank einzustellen und Hibernate die Tabellen anlegen zu lassen, haben wir in *application.properties* folgendes hinzugefügt:
  19.  
  20. [source,properties]
  21. ----
  22. spring.jpa.hibernate.ddl-auto=update
  23. spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/Ziegel24
  24. spring.datasource.username=root
  25. spring.datasource.password=root
  26. ----
  27.  
  28. Danch haben wir mit Hilfe der _MySQL Workbench_ die Daten aus .csv-Dateien in folgender Reihenfolge importiert: `kunde`, `bestellung`, `produkt`, `position`.
  29. 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.
  30.  
  31. 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.
  32.  
  33. Beim Importieren der `position`-Daten gab es ein kleines Problem: die Zeile mit `id=0` wurde ignoriert. Diese Zeile haben wir wie folgt hineinbekommen:
  34.  
  35. [source,sql]
  36. ----
  37. insert into position (id,bestellung_id,anzahl,produkt_id)
  38. values (-1,1,4000,29)
  39. ;
  40.  
  41. update position
  42. set id = 0
  43. where id = -1
  44. ;
  45. ----
  46. Zwei Befehle sind notwendig, weil eine `0` für Spalte `id` auf einen automatisch generierten Wert gesetzt wird.
  47.  
  48. 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:
  49.  
  50. [source,yaml]
  51. ----
  52. version: "3.7"
  53. services:
  54. db:
  55. image: mysql
  56. volumes:
  57. - ./mysql/db/entrypoint:/docker-entrypoint-initdb.d/
  58. - ./mysql/db/config.cnf:/etc/mysql/conf.d/config.cnf
  59. environment:
  60. MYSQL_ROOT_PASSWORD: root
  61. MYSQL_DATABASE: Ziegel24
  62. ports:
  63. - "3306:3306"
  64. ----
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement