Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [OOP] Daten aus der DB sofort als Objekt speichern? (https://www.delphipraxis.net/145146-%5Boop%5D-daten-aus-der-db-sofort-als-objekt-speichern.html)

TheMiller 24. Dez 2009 14:24


[OOP] Daten aus der DB sofort als Objekt speichern?
 
Hallo,

ich lade aus einer Datenbank Datensätze und möchte diese als Objekte erstellen und auch in einer TreeView anzeigen. Jetzt habe ich mich gefragt, ob es klüger wäre, sofort aus den Datensätzen Objekte zu erstellen und diese in einer abgeleiteten Object-List-Klasse zu verwalten, oder ob ich die Datensätze nur im ID und Titel anzeigen lassen sollte und bei Klick auf einen Eintrag das eigentliche Objekt erstellen sollte, quasi "onDemand".

Ich habe mal 2000 Einträge in die Datenbank geschrieben und beide Varianten ausprobiert. Hier habe ich dann einen RAM-Verbrauch von 7MB (das sind 1,9MB mehr als bei der "onDemand-Variante"), bei 4000 Objekten wären es 9MB.

Vorteil ist natürlich, dass durch die Objekte schön rekursives löschen etc. möglich ist - wäre bei der anderen Methode etwas umständlicher...

Was ist sinnvoll? Was soll ich tun?

Danke und frohes Fest / frohe Festtage!

Elvis 24. Dez 2009 15:00

Re: [OOP] Daten aus der DB sofort als Objekt speichern?
 
Du kannst doch deine Entitäten auch in 2 Schritten laden.
Du markierst dir welche Eigenschaften sofort geladen werden sollen, und welche erst wen wirklich alles nötig ist.
Dadurch sparst du dir das Gefrickel, was du wohl jtzt gerade hast, nämlich deine Entitäten 2-mal zu verwalten: einmal als irgendein dummer String in irgendeinem Control, und danach plötzlich als richtige Entität mit einem Objekt.
Ob es sich wirklich lohnt den Weg zu gehen hängt davon ab, wie der User auf die Daten zugreift.
Wenn immer nur wenige Daten auf einmal erfragt werden, ist das Lazy-Loading wohl nicht nur Overkill, sondern wird auch die Last auf Datenbank und App-server nur sinnlos erhöhen.
Was man gerade in Delphi erstmal machen muss, wo rein RAD-basierte Clients die Regel sind, ist MVP/MVC Samples raussuchen und auch wie in Delphi Mediatoren (Die den Link zw. View und Model bilden) am sinnvollsten entworfen werden.
Da wirkliches OO in Delphi eher die Ausnahme ist, kannst du dich wohl auf eine längere Google-Exkursion gefasst machen.
Was ich auf die Schnelle fand war das hier A Simple start with MVP in Delphi for Win32, Part 1.

Schaue dir auch unbedingt tiOPF an, ein Persistenz Framework für Delphi, welches wohl schon mit MVP-Framework kommt.

Luckie 24. Dez 2009 17:35

Re: [OOP] Daten aus der DB sofort als Objekt speichern?
 
Falls du noch die freie Wahl der Datenbank hast, kannst du dir auch mal eine objektorientierte Datenbank wie Bei Google suchendb4o angucken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz