flowh: Woher Informationen über Objekt?

Hallo Miteinander!

Also ich bin gerade dabei, ein bisschen Java zu programmieren.
Dabei bin ich auf folgendes Problem gestoßen:

Ich will ein Objekt (bzw. seine Eigenschaften) in eine Datenbank einfügen. Das Objekt soll von der verarbeitenden Klasse einfach nur als Object empfangen werden. (z.B. so: insertObject(Object obj)).

Nun stellt sich mir die Frage, ob ich die Informationen über das einzufügende Objekt aus der Datenbank abfragen soll, die ja dafür die passenden Tabellen und Felder bereitstellen muss, und dann aufgrund dieser Informationen die Eigenschaften des Objekts abfragen soll.

Oder ist es sinnvoller, sich mittels Reflection die Informationen über das Objekt direkt in Java zu holen, dann darüber die Eigenschaften des Objekts abzufragen und (nach vorheriger Prüfung auf richtige Struktur der DB) diese dann in die Datenbank einzufügen?

Ich hoffe, ich konnte mein Problem einigermaßen verständlich schildern.

Servus

--
flowh .
Es ist nicht deine Schuld, dass die Welt ist, wie sie ist, es wär nur deine Schuld, wenn sie so bleibt.
   - Die Ärzte
  1. Hallo,
    Tendenziell würde ich die zweite Möglichkeit wählen, dass Du auf die Datenbank erst gehst, wenn du wirklich das Insert fährst. Denn Datenbank-Zugriffe sind immer teuer!

    Prinzipiell ist Dein Problem (Zugriff von einer Objektorientierten Umgebung auf ein relationales Datenbank-System) aber sehr verbreitet, da machen sich viele einen Kopf drum.

    Und es gibt auch ein paar brauchbare Lösungsansätze dazu (natürlich die Frage, ob sich der Aufwand der Beschäftigung mit dem Thema für dein aktuelles Projekt lohnt).

    Grüße,
    Jörg

    1. Hallo Jörg!

      Auch dir vielen Dank für deine Antwort und den hilfreichen Link!

      Servus

      --
      flowh .
      Es ist nicht deine Schuld, dass die Welt ist, wie sie ist, es wär nur deine Schuld, wenn sie so bleibt.
         - Die Ärzte
  2. Hi,

    kurz und knapp? Wahnsinnsvorhaben, kids, don't try this at home...
    Der "Impedance-Mismatch"
    Objekt-Relationales Mapping.

    Wir haben gerade sowohl so eine Sache in Entwicklung weil existierende Frameworks an ihre Grenzen stoßen, als auch eines der fertigen (Hibernate) im Einsatz. Da steckt schon eine Menge Arbeit drin, die man nach Möglichkeit vermeiden sollte.
    Wenn du dich für die Technik interessierst, über Hibernate gibts sehr viel.

    Ansonsten gibts ein ganze (relativ neue) API (Java Persistence API, JPA) für solche Vorgänge. Weitere Frameworks findest du z.B. hier.

    Gezielt auf deine Frage: Wenn du keine OO-Datenbank benutzt die direkt dieses Objekt empfangen kann, dann entweder per Reflection dynamisch auslesen oder noch besser irgendwo konfigurieren (XML-Datei o.ä.). Letzteres bietet sich sowieso an, weil du somit steuern kannst was, wann und wohin.

    MfG
    Rouven

    --
    -------------------
    ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
    1. Hallo Rouven!

      Der "Impedance-Mismatch"
      Objekt-Relationales Mapping.
      Hibernate)
      Java Persistence API, JPA
      hier.

      Vielen Dank für die Links! Ich wollte eigentlich nur eine kleine Spielerei programmieren, nichts großartiges, und dafür ist mir das dann doch zu viel, das selbst zu implementieren... vor allem wegen meiner nur sehr beschränkten Erfahrung.

      Gezielt auf deine Frage: Wenn du keine OO-Datenbank benutzt die direkt dieses Objekt empfangen kann, dann entweder per Reflection dynamisch auslesen oder noch besser irgendwo konfigurieren (XML-Datei o.ä.). Letzteres bietet sich sowieso an, weil du somit steuern kannst was, wann und wohin.

      Ok. Die XML-Datei sieht dann also so aus, dass für jede Objekteigenschaft eines bestimmten Objekts festgelegt ist, wie, wo, wann diese in die Datenbank geschrieben wird, oder? D.h. aber ja, dass die einzufügenden Objekte vorher schon bekannt sein müssen. Unbekannte Objekte kann man dann nur per Reflection "auslesen".

      Vielen Dank für deine Antwort, hat mir sehr geholfen!

      Servus

      --
      flowh .
      Es ist nicht deine Schuld, dass die Welt ist, wie sie ist, es wär nur deine Schuld, wenn sie so bleibt.
         - Die Ärzte