ich hätte da mal eine (Grundsatz-)Frage … Ich möchte ein kleines JavaEE Project anfangen.
Fange ich jetzt am Besten mit der DB (soll Postgres werden) an und achte auf eine saubere, normalisierte DB und baue dann meine Klassen entsprechend der Tabellen auf
Oder baue ich ein ordentliches Model und richte die DB dann danach? (Hierzu habe ich gelesen, dass JPA und Vererbung wohl nicht so das gelbe vom Ei wäre, kann aber auch sein, dass ich das falsch verstanden hab).
Wenn Du auf der grünen Wiese bist, baue Dein Model in Java und lass die JPA-Mapping-Annotations für die Abbildung in DB-Tabellen sorgen. Kontrolliere dabei die entstehenden Datenbank-Objekte, um grobe Schnitzer früh zu erkennen. Am Anfang macht man mangels Verständis für die Mappingkonzepte nämlich gerne Fehler.
Tiefe Vererbungshierarchien sollten grundsätzlich vermieden werden. Das ist nicht durch JPA getrieben. In Standardfällen klappt es mit Vererbung und JPA recht einfach. Spezialfälle (z.B. polymorphe Queries) sind evtl. tricky, aber insgesamt auch gut abbildbar.
entwerfe ein sauberes SQL auf der grünen Wiese, ohne an irgendeine Programmiersprache zu denken - und danach schreib die JPA-Mappings.
(finde ich aus verschiedenen Gründen besser, ein Anfänger könnte aber auch mit JPA anfangen, weil dann die DML-Befehle für die DB automatisch aus dem Mapping erzeugt werden können - spart Zeit, und wenn man die Roh-Datenbank ab und zu anschaut, dann lernt man auch was dabei)
Ich bevorzuge auch den Domänenorientierten Ansatz, also erst das Domänenmodell und dann erst die Datenbank. Offensichtlich sind die Ansätze verschieden
Leider führt das dann auch recht schnell mal zu Frustration, weil sich nur die „gängigen“ Datenstrukturen problemlos abbilden lassen und die Mappinframeworks (selbst wenn es eine relationale Repräsentation gibt) MultiMaps oder echte Hashbags (nicht einfache Listen) nicht unterstützen.
Da muss man sich dann einschränken, was teilweise ziemlich unbefriedigend ist.
liest sich ja alles sehr nachvollziehbar aber wirklich Erhellung bringts mir noch nicht :ka: :).
Tiefe Vererbungshirachien wirds nicht geben, bei dem was ich im Moment so im Kopf durchspiele komme ich auf maximal 2. Allerdings kommen auf jeden Fall ein paar one-to-many Beziehungen dazu…Kunde --> mehrere Adressen --> mehrere Ansprechpartner mit unterschiedliche Telefonnummern oder Kunde --> mehrere zugeordnete Maschinen …usw)
Um aber nicht einen ewigen Thread loszutreten werde ich nam lan den Ansatz mit … zuerst das Modell und dann die DB probieren.