Hallo zusammen
In diesem Thread würde ich gerne ein paar Meinungen zu einer Design-Frage lesen, die ich im folgenden etwas genauer schildere:
Es geht um das Speichern von Objekten in eine Datenbank. Diese Datenbank ist sehr dynamisch (worauf ich nicht genauer eingehen will), was die Verwendung eines selber programmierten Moduls zwingend notwendig macht. Persistierungs-Frameworks sollen also in dieser Frage nicht weiter berücksichtigt werden, denn das DB-Zugriffs-Framework ist fest gesetzt und wird von einem anderen Entwicklungs-Team zur Verfügung gestellt.
Um zu speichern, greife ich also auf dieses Daten-Integrations-Modul zu, welches mir vorschreibt, wie Objekte zu speichern sind.
Momentan sieht es so aus, dass ich in meinem eigenen Modul eine Klasse "DbManager" habe, in welcher sich der gesamte Zugriff auf die Daten-Integration befindet und welche als Singleton erzeugt wird (per Dependency Injection mit Spring). Wenn nun also ein Objekt vom Typ "X" gespeichert werden soll, dann rufe ich dbManager.saveX(InstanzVomTypX) auf.
Es war für mich das nahe liegendste, das so zu lösen - aber wenn ich mir weiter Gedanken dazu mache, dann frage ich mich halt, ob die Klasse X nicht ihre eigene Save-Methode haben sollte - also dass dann der Aufruf erfolgt durch instanzVomTypX.save();
- dann müsste halt jede Instanz von X eine Referenz auf meinen dbManager haben. Wäre das nicht viel "objektorientierter"? Aber ist es nicht irgendwo undurchsichtig, dass dann alle Objekte eine eigene Referenz auf den DbManager haben?
Die Methoden im DbManager statisch zu machen schliesse ich aus, da ihm per Spring die Referenzen zu den DatenIntegrations-Objekten übergeben werden, die eben auch nicht statisch sind (das Klassenmodell ist ein Objekt vo Typ Klassenmodell, das Objektmodell ist eine Instanz vom Typ Objektmodell etc) - oder ist das kein Grund?
Ich bin in solchen Dingen sehr unerfahren und würde mich sehr über ein paar Stellungsnahmen mit kurzen Begründungen freuen.
In diesem Thread würde ich gerne ein paar Meinungen zu einer Design-Frage lesen, die ich im folgenden etwas genauer schildere:
Es geht um das Speichern von Objekten in eine Datenbank. Diese Datenbank ist sehr dynamisch (worauf ich nicht genauer eingehen will), was die Verwendung eines selber programmierten Moduls zwingend notwendig macht. Persistierungs-Frameworks sollen also in dieser Frage nicht weiter berücksichtigt werden, denn das DB-Zugriffs-Framework ist fest gesetzt und wird von einem anderen Entwicklungs-Team zur Verfügung gestellt.
Um zu speichern, greife ich also auf dieses Daten-Integrations-Modul zu, welches mir vorschreibt, wie Objekte zu speichern sind.
Momentan sieht es so aus, dass ich in meinem eigenen Modul eine Klasse "DbManager" habe, in welcher sich der gesamte Zugriff auf die Daten-Integration befindet und welche als Singleton erzeugt wird (per Dependency Injection mit Spring). Wenn nun also ein Objekt vom Typ "X" gespeichert werden soll, dann rufe ich dbManager.saveX(InstanzVomTypX) auf.
Es war für mich das nahe liegendste, das so zu lösen - aber wenn ich mir weiter Gedanken dazu mache, dann frage ich mich halt, ob die Klasse X nicht ihre eigene Save-Methode haben sollte - also dass dann der Aufruf erfolgt durch instanzVomTypX.save();
- dann müsste halt jede Instanz von X eine Referenz auf meinen dbManager haben. Wäre das nicht viel "objektorientierter"? Aber ist es nicht irgendwo undurchsichtig, dass dann alle Objekte eine eigene Referenz auf den DbManager haben?
Die Methoden im DbManager statisch zu machen schliesse ich aus, da ihm per Spring die Referenzen zu den DatenIntegrations-Objekten übergeben werden, die eben auch nicht statisch sind (das Klassenmodell ist ein Objekt vo Typ Klassenmodell, das Objektmodell ist eine Instanz vom Typ Objektmodell etc) - oder ist das kein Grund?
Ich bin in solchen Dingen sehr unerfahren und würde mich sehr über ein paar Stellungsnahmen mit kurzen Begründungen freuen.