![]() |
Delphi-Version: 10 Berlin
Fragerunde. Wie macht ihr das? Speichern von Objekten
Hallo zusammen,
ich versuche gerade in meiner Firma das OOP denken weiter nach vorne bringen. und komme jetzt an einen Punkt wo ich die Inspiration von anderen Entwicklern brauche. Die Frage ist , wie speichert ihr Objekte in die Datenbank? Hier gilt das Motto, so wenig SQL in Quellcode, dafür haben wir Datenbankobjekte. ( bspw. SP's ). Diese Meinung kann ich verstehen, so kamen auch Protest als ich meine Klassen mit einen zusammengebauten SQL speichere wie
Delphi-Quellcode:
nun aber eine SP zu schreiben die so viele Parameter hat wie die Klasse properties und dann auch nur ein insert macht, find ich halt zu viel Overhead...
var
sSQL : string begin ssql := ' insert into TAB ( COL_1, COL_2) values ( %d , %d ) '; ssql := format(ssql , [ OBJ.PROP_1 , OBJ.PROP_2]); { nun würde ich das SQL ausführen } Daher wie macht ihr das ? Allgemeingültige SP die das Objekt serialisiert bekommt und sich das SQL selbst zusammbaut ? baut ihr das SQL wie oben im Beispiel zusammen und schießt es aus Delphi einfach ab ? Ist meine Meinung vielleicht falsch und es ist wirklich besser eine Stored Procedure mit X Parameter zu erstellen? oder habt ihr komlett andere Varianten ... ? Wie fremde Frameworks etc. ? bin über alles Dankbar !! Gruß |
AW: Fragerunde. Wie macht ihr das? Speichern von Objekten
Du kannst auch in so einem SQL Parameter verwenden anstelle von Format.
Das ist übersichtlicher, weniger fehleranfällig und auf jeden Fall sicherer. Dann hast du 1 SQL was du sogar Prepare();en kannst und dann änderst du für jedes Objekt was du speichern willst nur die Werte der Parameter.
Delphi-Quellcode:
query.SQL.Text := 'insert into TAB ( COL_1, COL_2) values ( :col1 , :col2 )';
query.Prepare; for i:= 1 to 1000 do begin query.ParamByName('COL1').AsString := obj[i].Prop1; query.ParamByName('COL2').AsInteger := obj[i].Prop2; query.ExecSQL; end; |
AW: Fragerunde. Wie macht ihr das? Speichern von Objekten
Hast du dir schon mal mORMot angeschaut?
![]() Hier gibt es ein paar Infos zu ORM mit mORMot: ![]() |
AW: Fragerunde. Wie macht ihr das? Speichern von Objekten
Was ist SP?
BTW: OOP ist kalter Kaffee ;-) schau dir mal DDD an. ( ![]() Edit: ach vermutlich SP = Stored Procedure. Ja ORM ist das Richtige ( ![]() Wir haben da etwas selbstgemachtes. Das ist tief unten drin. Mit der DB kommt man so gut wie nie in Berührung. |
AW: Fragerunde. Wie macht ihr das? Speichern von Objekten
![]() DDD müsste man aber von anfang an strikt durchführen, eine Vorhandene Sortware nun mit ~ 3,5 mio. Zeilen strikst du mal nich so eben um. ;) @Wosi das wäre ein Framework wovon ich nachts Träume wenn wir das benutzen würden, :D mir war nicht bekannt dass es sowas auch für Delphi gibt. Ich werde mir das aufjedenfall mal anschauen, vielleicht kann man das mal vorstellen ... ! :) ( trotzdem freue ich mich auf weitere Post :D ) |
AW: Fragerunde. Wie macht ihr das? Speichern von Objekten
Egal was, aber bitte zumindest die SQL Statements parametrisieren - Stichwort:
![]() |
AW: Fragerunde. Wie macht ihr das? Speichern von Objekten
Ach Stevie, das ist ein bekanntest Problem was ignoriert wird ;)
Das ist schon bei unserem ersten Suchfeld möglich :D |
AW: Fragerunde. Wie macht ihr das? Speichern von Objekten
Eventuell db4o
![]() |
AW: Fragerunde. Wie macht ihr das? Speichern von Objekten
Zitat:
Zitat:
Mal Spaß beiseite, wer die Gefahr von SQL-Injections ignoriert, sollte sich ernsthaft überlegen ob er den Beruf noch weiter ausüben sollte (will jetzt nicht von "standrechtlich Erschießen" und ähnlichem reden.:) ). |
AW: Fragerunde. Wie macht ihr das? Speichern von Objekten
Moin...:P
Zitat:
![]() Zitat:
Wenn du auch das gesamte SQL (Query, SP usw.) aus dem Quelltext auslagern willst, dann kann ich dir das Tutorial von MaBuSE empfehlen. ![]() Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz