Objektreferenzen wiederherstellen

Status
Nicht offen für weitere Antworten.
A

Abraxaskuh

Gast
Hallo Zusammen!

Kann mir jemand Tipps geben, wie ich am besten Objektreferenzen wiederherstelle, nachdem sie in einer Datenbank abgespeichert waren?
Ich habe bisher lediglich gefunden, dass Beziehungen in der Datenbank als Fremdschlüssel gespeichert werden.
Ich habe zum Beispiel eine Klasse, welche Assoziationen zu zwei weiteren Klassen hat. Diese haben wiederum Referenzen zu noch anderen Klassen. :roll:
Für mich als Anfänger schwierig einen Ansatz zu finden. Habe bisher im Internet leider auch noch keine guten Beispiele dazu gefunden... Oder ich suche an der falschen Stelle ???:L

Hoffe es kann jemand helfen, bin zur Zeit ziemlich ratlos...
 

Bleiglanz

Gesperrter Benutzer
in SQL gibts erstmal keine "Objektreferenzen"

a) von Hand: speichere alle Objektinstanzen als Zeilen in die Datenbank (für jede ein Insert) und ersetzte dabei die "Referenzen" durch die entsprechenden Foreignk Keys; beim einlesen dann das ganze rückwärts (select -> daten in ein Objekt -> Fremdschlüssel lesen -> select für den referenzierten Datensatz -> in Objekt lesen -> usw.)

b) nimm einen O/R Mapper a la Hibernate / JDO, die machen genau das für dich
 
A

Abraxaskuh

Gast
Soweit verstanden...

Aber muss ich jetzt beim Start des Programms sämtliche Objekte auslesen, weil alle Objekte miteinander verbunden sind? Oder gibt es auch eine Möglichkeit eine Klasse alleine auszulesen und die referenzierten Objekte später. Und wenn ja, wie vermeide ich, dass ich so Objekte doppelt und dreifach in den Arbeitsspeicher lade? Oder ist das unsinnig so? Wie managed man das im allgemeinen?
 

Bleiglanz

Gesperrter Benutzer
nimm Hibernate!

i.A. managed man das gar nicht, sondern arbeitet zeilenorientiert (d.h. man lädt nur immer eine zeile und die anderen bei bedarf)

mach ein private Member für den Fremdchlüssel selbst

und mach einen getter, der ERST BEIM AUFRUF das abhängige Objekt aus der Datenbank holt
 
G

Guest

Gast
Sorry, wenn ich nerve... Aber was ist ein private Member?
Und Hibernate kann ich leider nicht mehr nehmen, die Datenbank und alles drumherum steht schon...
Uns fehlt halt nur noch die Geschichte mit den Fremdschlüsseln... Aber das ich immer erst beim Aufruf eines direkten Objektes die Fremdschlüssel lade ist schonmal ein guter Tipp. Nur wie vermeide ich es dann Objekte doppelt zu laden?
 
A

Abraxaskuh

Gast
Und noch was... Kann es sein, dass wenn ich eine Liste von Objekten anzeige ich die Objekte gar nicht in den Arbeitsspeicher laden brauche, sondern nur eine Liste der wichtigsten Daten erstelle und erst wenn jemand ein Objekt im GUI anklickt das gesamte Objekt geladen wird?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben