Erstgespräch vereinbaren
Kommende Termine
4. Mai 2026
IT-Talk: Digitale Verantwortung
Details →
12. Juni 2026
Vernissage
28. September 2026
IT-Talk: Event-Driven Architecture

Visualisierung mit Graphen

Graphen in Java: Abhängigkeiten mit JGrapht analysieren und mit Graphviz visualisieren – ein praktischer Leitfaden.

Datenvisualisierung und Graphen

Graphen helfen bei der Beantwortung von Konnektivitätsfragen in Softwareprojekten, wie der Bestimmung von Benutzerberechtigungen, der Reihenfolge der Komponenteninitialisierung und der Erkennung zirkulärer Prozesse.

Warum Graphen?

Javas Standardbibliotheken bieten Datenstrukturen für Listen und Maps, aber die Graphen-Funktionalität ist begrenzt. Bibliotheken wie JGrapht und Google Guava füllen diese Lücke.

Praktischer Anwendungsfall: Datenbank-Benutzerlöschung

Das Kernbeispiel betrifft das Entfernen von Benutzerdaten aus einer Datenbank unter Berücksichtigung von Tabellenabhängigkeiten. Die wichtigsten Herausforderungen waren:

  • Unvollständige Foreign-Key-Informationen in der Datenbank
  • Normalisierte Daten, die das Löschen abhängiger Datensätze erfordern
  • Mögliche Zyklen im Datenmodell

Lösungsarchitektur

Datentypen

Für Table, TableColumn und ForeignKey werden unveränderliche Datenstrukturen mit der Immutables.org -Bibliothek verwendet.

Graph-Wrapper

Eine eigene Graph-Klasse, die JGraphts DirectedGraph umschließt, bietet Methoden wie hasPath() zur Bestimmung der Konnektivität zwischen Tabellen-Knoten.

Visualisierung

Mit Graphviz wurden .dot-Dateien generiert, um Beziehungen zu visualisieren. Die GraphAsDot-Klasse transformiert Graph-Strukturen in Graphviz-Syntax mit anpassbaren Attributen.

Filterung von Foreign Keys

Basierend auf Löschabhängigkeiten werden Foreign Keys gefiltert, um die relevanten Beziehungen für die Datenlöschung zu identifizieren.

Fazit

Graphenvisualisierung kommuniziert komplexe Beziehungen effektiv, besonders während Analysephasen. Der Ansatz wurde als “Flapdoodle Graph” zur Wiederverwendung paketiert. Als Alternative bietet Google Guava Graph-Funktionalität für Projekte, die zusätzliche Abhängigkeiten vermeiden möchten.

Zurück zum Blog