MySQL Many to Many Tabellen in Java abbilden?

DefconDev

Bekanntes Mitglied
Hallo zusammen,

Ich habe ungefähr eine solche Struktur.

Tabellen:
Hauptverzweigung

X one to many --> Y

Y many to many --> Z

Z one to many --> A

A many to many --> B

Nebenverzweigung

Y one to one --> S

Z one to one --> P

A one to one --> D

Wenn ich das 1:1 in Java als Klassen abbilde, wird es spätestens ab der dritten Dimension(Z), wenn man bei X anfängt extrem unübersichtlich.

Abhelfen soll da ORM bzw. Frameworks wie Hibernate/Spring auf Basis von JPA. Sollte ich das alles richtig verstanden habe, das Thema ist absolutes Neuland. Hatte bisher nur simple Datenbanken programmiert, da war so etwas überdimensioniert. Die ersten Tutorials die ich mir ansah waren auch sehr interessant, nur stelle ich mir auch hier die Frage ob Hibernate/Spring überhaupt nötig ist? Bzw. übersehe ich etwas oder gehe ich das Problem komplett falsch an.
 
K

kneitzel

Gast
Also generell nötig ist Hibernate/Spring nicht. Eine einfache Ebene um Daten zu laden und zu speichern (halt ein Data Layer) muss nicht komplex sein. Was für ein Problem mit der Abbildung hast Du denn?
Bei der Abbildung von "to many" hast Du dann unter dem Strich einfach ein Array mit den Elementen.

Was hier aber natürlich Sinn machen kann ist ein "lazy load". Du lädst Dinge also nur, wenn Du diese wirklich brauchst und ggf. auch nur das, was Du wirklich benötigst.

Also wenn Du eine Instanz von A lädst, dann lädst Du nicht die ganzen B, auf die Du verweist. Das wird dann erst nachgeladen, wenn Du es wirklich benötigst. Wenn Du nun eine typische Gui hast, dann hast Du evtl. ein Fenster, dass ein A Element anzeigt mit einer Liste von allen B Objekten. Aber da interessieren dich (hoffentlich) nicht bei jedem B Element die Liste von allen A Elementen, zu denen das verlinkt ist.

So ein Data Layer ist im übrigen extrem einfach und schnell geschrieben. Wir haben auf Arbeit auch erst Frameworks benutzt, aber der Overhead war dann unter dem Strich höher als das schnelle "eintippen" eines Data Layer. Und die Komplexität der ganzen Lösung wurde dadurch deutlich reduziert.
 

stg

Top Contributor
Wenn ich das 1:1 in Java als Klassen abbilde, wird es spätestens ab der dritten Dimension(Z), wenn man bei X anfängt extrem unübersichtlich.
Abhelfen soll da ORM bzw. Frameworks wie Hibernate/Spring auf Basis von JPA.

Die Java-Klassen für die Datenhaltung in der Anwendung brauchst du trotz, oder gerade mit ORM Frameworks sowieso. In der Regel erzeugst du durch die Verwendung also eher overhead, wie kneitzel schon schreibt, denn damit deine Anwendung später nicht von der Struktur der Datenbank abhängig ist, wird hier oft noch ein zusätzliches DTO Layer zwischengeschoben.
JPA untersützt dich beim Mapping, beim Datenzugriff usw. aber um die anschließende Verwaltung der Beziehungen der einzelnen Entity-Klassen musst du dich z.B. hinterher trotzdem selbst kümmern. Dein Data Layer wird jeenfalls dadurch nicht weniger komplex, falls du dir das erhoffst?

Also schildere doch biite zunächstmal, was dir da unübersichtlich erscheint!
 

AndiE

Top Contributor
Ich finde, ein gutes Beispiel zum Verständnis ist Kunde-Rechnung-Artikel. Dabei ist Kunde zu Rechnung 1:n und Rechnung zu Artikel m:n. Wenn du das nun serialisieren müsstest, dann enthält jede Klasse "Kunde" eine Liste " Rechnungen". Für die Anwendung ist es in diesem Falle schlau, in der Klasse "Rechnung" eine Sammlung "Artikel anzulegen. Die Datenablage ist dann zwar redundant. Aber es ist ja eher von der Anfrage auszugehen "Welche Artikel stehen auf der Rechnung", als die Anfrage "Auf welchen Rechnungen steht ein Artikel?". Alternativ kann man aber auch das abbilden, indem man in die Klasse Artikel eine Sammlung "Rechnungen" einfügt.
 

DefconDev

Bekanntes Mitglied
Was hier aber natürlich Sinn machen kann ist ein "lazy load". Du lädst Dinge also nur, wenn Du diese wirklich brauchst und ggf. auch nur das, was Du wirklich benötigst.

Leider müssen alle Informationen abgebildet werden, zumin. gut 2/3.

Ich habe jetzt für jeden Knotenpunkt der eine "one to many" oder "n:m" Beziehung hat eine eigene Klasse erstellt und lasse die miteinander kommunizieren anhand der id's.

Das erscheint mir jedenfalls übersichtlicher als wenn ich etliche Arrays(Listen) aufrufe und permanent alles durchlaufen muss über mehrere Dimensionen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
OnDemand One to Many bekomm es nicht hin Datenbankprogrammierung 7
G MongoDB - klassisches one to many Datenbankprogrammierung 2
P Many to Many mit JoinTable Datenbankprogrammierung 2
E PostgreSQL Exception too ...many clients already bei DB-Abfrage Datenbankprogrammierung 14
M Hibernate liefert mir bei many-to-one leeres Feld Datenbankprogrammierung 5
G Many to Many Datenbankprogrammierung 2
foobar ISAM error: too many files open Datenbankprogrammierung 5
rambozola mysql to many connections Datenbankprogrammierung 27
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
Ataria SQLite Werte aus zwei Tabellen zusammenführen Datenbankprogrammierung 8
I H2 - GUI Tool.... sehe aber keine Tabellen Datenbankprogrammierung 2
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Kirby.exe Tabellen Zeilen combinen und splitten Datenbankprogrammierung 3
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
M Sql Tabellen erstellen Datenbankprogrammierung 3
F Tabellen automatisch erstellen wenn sie nicht existieren Datenbankprogrammierung 6
C Mapping mit Annotations von 2 Tabellen Datenbankprogrammierung 22
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L Join zweier Tabellen in SQL Datenbankprogrammierung 2
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
feinperligekohlensaeure MySQL Dynamische Tabellen. Wie kann man es besser machen? Datenbankprogrammierung 3
O HSQLDB Eine Entität, mehrere Tabellen Datenbankprogrammierung 8
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
D Count(*) auf 2 Tabellen anwenden Datenbankprogrammierung 7
V SQLite 2 Tabellen vergleichen und nur Unterschiedliche Sätze rausgeben. Datenbankprogrammierung 31
F Tabellen verbinden Datenbankprogrammierung 13
L0MiN Wie kann ich eine bestimmte Seite aus verschiedenen Excel-Tabellen in eine neue Exceldatei kopieren? Datenbankprogrammierung 1
U Kann die Tabellen nicht finden Datenbankprogrammierung 0
D umschalten zwischen verschiedene Tabellen Datenbankprogrammierung 1
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
J MySQL Workbench Tabellen werden verschoben Datenbankprogrammierung 1
M MySQL Tabellen dynamisch erstellen Datenbankprogrammierung 12
T Ähnliche Wrapperklassen + DB-Tabellen Datenbankprogrammierung 1
K HSQLDB Einzelne Tabellen abfragen? Datenbankprogrammierung 4
T Tabellen Alias Datenbankprogrammierung 7
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
J Tabellen in Tabellen finden Datenbankprogrammierung 4
S versionierte Tabellen Datenbankprogrammierung 2
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
I Was ist besser: Tabellen oder Spalten Datenbankprogrammierung 1
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Vergleich von Daten in verschiedenen Tabellen Datenbankprogrammierung 1
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
G 2 Tabellen und ein spezieller Eintrag Datenbankprogrammierung 2
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
T 2 Tabellen aus 2 Datenbanken miteinander vergleichen Datenbankprogrammierung 6
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
R PostgreSQL Tabellen hinzufügen, falls nicht vorhanden Datenbankprogrammierung 3
E Tabellen nacheinander auslesen Datenbankprogrammierung 10
D Übersichtliche Zuweisung von Daten in Tabellen Datenbankprogrammierung 17
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
A Zugriff auf DB-Tabellen mit Objekten Datenbankprogrammierung 3
K SQL tabellen auswahl in jfreechart Datenbankprogrammierung 2
0 Alle Tabellen aus DB lesen Datenbankprogrammierung 2
F Komplexer Tabellen-Join und Ausgabe in Excel Datenbankprogrammierung 17
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
H Fortlaufende Nummerierung innerhalb mehrerer Tabellen Datenbankprogrammierung 4
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
Consuelo Verbinden von zwei Tabellen, foreign key Datenbankprogrammierung 4
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
R MySQL Unbenutzte Tabellen/Spalten herausfinden Datenbankprogrammierung 7
I mit Java SQL Attribute / Tabellen erstellen Datenbankprogrammierung 17
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
R hibernate Frage zu configFile-Pfad und Groß/Kleinschreibung von Postgres-Tabellen Datenbankprogrammierung 8
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
F Einzelne Sql- Tabellen sichern (lokal) Datenbankprogrammierung 2
I MySQL - Anzahl Tabellen heraus finden Datenbankprogrammierung 6
B Es werden keine Tupel in Tabellen abgelegt Datenbankprogrammierung 2
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
S HSQLDB Kopiere Tabellen Datenbankprogrammierung 2
Guybrush Threepwood Nachträgliches Ändern von Variableneigenschaften in (gefüllten) Tabellen Datenbankprogrammierung 3
J Tabellen auflisten, die in einer Datenbank enthalten sind Datenbankprogrammierung 16
T DB2 delete/update über 2 Tabellen Datenbankprogrammierung 2
T SQL Abfrage: Zeige alle Values von bestimmten Tabellen Datenbankprogrammierung 11
R Datenbanken, Tabellen normalisieren. Datenbankprogrammierung 1
A Datenbankzugriffe, mehr Tabellen Datenbankprogrammierung 12
oliver1974 JPA, JTable und 2 DB-Tabellen... Datenbankprogrammierung 2
J Starre Datenbankstruktur oder Tabellen bei Bedarf neu erzeugen? Datenbankprogrammierung 5
X Abfrage über 2 Tabellen mit Tücken Datenbankprogrammierung 3
G verbindung 2er Tabellen Datenbankprogrammierung 3
M Auswerten über drei Tabellen Datenbankprogrammierung 2
H Inserts in 2 Tabellen 1:n Datenbankprogrammierung 6
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
M JavaDB/Derby: Tabellen erstellen Datenbankprogrammierung 8
G 2 Tabellen in einer 1:n Verbindung Datenbankprogrammierung 2
M insert in 2 tabellen Datenbankprogrammierung 7
MQue Metadaten für Tabellen in der Datenbank Datenbankprogrammierung 5
D aus mehreren sql tabellen matchen und sortieren Datenbankprogrammierung 6
G 2 Tabellen zusammenfügen wie? Datenbankprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben