Hallo,
ich hääte mal eine allgemeine Frage wie man etwas macht.
Ich habe eine Klasse „USER_DATA“, die Daten aus einer DB holt und diese im Bauch hält.
Die Daten werden dann aus der Klasse gelesen um sie in einem Frame anzuzeigen.
Die gleichen Daten werden aber auch an einer ganz anderen Stelle in der Applikation benötigt. Damit ich die Daten hier nicht nochmals holen muß würde ich natürlich geren auf die Klasse „USER_DATA“ zugreifen d.h die gleiche Instanz verwenden und nicht eine neue Instanz der Klasse laden.
Nun meine Frage: Wie macht man das am besten ? Definiert man die Klasse „USER_DATA“ als Singleton um zu verhinder, dass die mehrmals geladen wird ? Oder läd man sie einmal und reicht dann die Instanz durch alle Ebenen durch bis an die Stelle wo man sie braucht ? Ich dachte auch schon an eine Art InstanzManager-Klasse d.h eine Klasse, die nur einmal geladen wird (Singleton) und selbst andere Klassen laden kann, die sie dann im Bauch hält. So könnte man über die InstanzManager jederzeit über den Namen der Klasse sich eine Referenz auf diese holen.
Also wie mach ich das nun am besten ???
Danke
Albert
moin albert,
sicher das du im richtigen brett bist, deine Terminologie ist so gar nicht Java-Like
nennen wir deine klasse mal datenSpeicher() [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Albert,
du hast zwei Möglichkeiten. Beide sind eigentlich gleich gut:
-
Singleton:
Je Komplexer desto interessanter
Z.B. für einen Datenbankzugriff.
-
Klassenattribut:
Besser, weil einfacher, solange es einfach bleibt
Z.B. bei Zugriff auf Attribute
Gruß
Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hibernate?!
Hi Albert,
der Singleton-Mechanismus ist ja schon der richtige Ansatz. Ich gehe deshalb auch nicht näher darauf ein.
Wenn du wirklich mit Java und einer DB arbeiten willst, dann empfehle ich dir das Hibernate-Framework (www.hibernate.org).
Da brauchst du dir um solche Sachen eigentlich keine Sorgen machen, denn Hibernate bietet hierfür verschiedene Caching-Mechanismen.
Heißt:
Du lädst in deinem Baum aus der DB ein Objekt der Klasse DatenSpeicher (aus DB-Tabelle DATENSPEICHER) mit der Id 4711.
An einer anderen Stelle lädst du dieses Objekt wieder. In Wirklichkeit kümmert sich jedoch der Cache darum, dass unnötig neu geladen wird.
Über entsprechende Konfiguration stellst du ebenfalls sicher, dass das Objekt im Cache aktuell ist.
Im Hinblick auf die Arbeit mit einer Datenbank kenne ich kein besseres Framework.
Ciao, Bill