Einzelnen Beitrag anzeigen

Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Datenbankobjekt in allen Objekten oder zentral?

  Alt 9. Jul 2012, 11:48
Delphi-Version: 5
Hallo,

ich hatte diese Frage schonmal gestellt und mich damals dafür entschieden, dass ich alle Objekte ganz abstrakt definiere (zB Benutzer, Notiz etc.) und ein zentrales Datenbankobjekt erstelle mit den Methoden (Read, Write etc.). Doch jetzt kommen mir ein paar Zweifel auf, ob das auf Dauer wirklich unkompliziert funktioniert.

Wie realisiert ihr den Datenbankzugriff der Objekte, wenn jedes Objekt auf die DB angewiesen ist? Der Unterschied wäre programmiertechnisch folgender:

Delphi-Quellcode:
//Variante 1: DB-Zugriff nur über DB-Klasse mit Read/Write-Methoden
Notiz:=TNotiz.Create;
Notiz.ID:=100;
db.Read(Notiz); //lädt eine Notiz mit allen Infos wie User, Timestamp usw.

//Variante 2: Objekt hat selbst eine DB-Schnittstelle
Notiz:=TNotiz.Create;
Notiz.LadeNotiz(100); //gleiches, wie bei dem DB-Objekt.
Der Unterschied kommt jetzt:
Wenn ich jetzt eine erweiterte Methode hinzufüge, die mehr oder andere Daten laden soll, dann ist eine einfache Read-Methode zu unflexibel, oder? Entweder wird diese ausgeführt (so wie sie ist), oder eben nicht. Würde das Notiz-Objekt selbst eine DB-Schnittstelle haben, könne man verschiedene Lese-Methoden implementieren, wie zB

Notiz.LadeErweiterteInfos(100); Das Problem ist, dass meine Read-Methoden so aussehen

Delphi-Quellcode:
...
if (Obj is TNotiz) then
begin
  sql:='...';
  ...
end;
Ich hoffe, dass ich mich nicht allzu dämlich ausgedrückt habe, es ist aber gerade schwer zu beschreiben. Die Kernfrage ist eben, ob jedes Objekt eine DB-Schnittstelle bekommen soll, oder ob das Auslesen aus der DB ein zentrales Objekt übernehmen soll. Wie löst ihr solche Fragen?

Danke im Voraus
  Mit Zitat antworten Zitat