AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Fragerunde. Wie macht ihr das? Speichern von Objekten
Thema durchsuchen
Ansicht
Themen-Optionen

Fragerunde. Wie macht ihr das? Speichern von Objekten

Ein Thema von Mokus · begonnen am 4. Aug 2017 · letzter Beitrag vom 5. Aug 2017
Antwort Antwort
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 4. Aug 2017, 15:28
Delphi-Version: 10 Berlin
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:
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 }
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...
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ß
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 4. Aug 2017, 15:35
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;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General ( 4. Aug 2017 um 15:39 Uhr)
  Mit Zitat antworten Zitat
Wosi

Registriert seit: 29. Aug 2007
59 Beiträge
 
#3

AW: Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 4. Aug 2017, 16:15
Hast du dir schon mal mORMot angeschaut? https://synopse.info/fossil/wiki/Synopse+OpenSource

Hier gibt es ein paar Infos zu ORM mit mORMot: https://www.slideshare.net/ArnaudBou...rom-sql-to-orm
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.456 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 4. Aug 2017, 16:33
Was ist SP?

BTW: OOP ist kalter Kaffee schau dir mal DDD an. (https://de.wikipedia.org/wiki/Domain-driven_Design) ok, inzwischen auch schon alt

Edit: ach vermutlich SP = Stored Procedure.

Ja ORM ist das Richtige (https://de.wikipedia.org/wiki/Objekt...nale_Abbildung)

Wir haben da etwas selbstgemachtes. Das ist tief unten drin. Mit der DB kommt man so gut wie nie in Berührung.

Geändert von freimatz ( 4. Aug 2017 um 16:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 4. Aug 2017, 16:45
Erklärung SP

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,
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 )
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 4. Aug 2017, 17:15
Egal was, aber bitte zumindest die SQL Statements parametrisieren - Stichwort: SQL Injection
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 4. Aug 2017, 17:47
Ach Stevie, das ist ein bekanntest Problem was ignoriert wird
Das ist schon bei unserem ersten Suchfeld möglich
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

AW: Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 4. Aug 2017, 20:36
Eventuell db4o https://de.wikipedia.org/wiki/Db4o ?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 5. Aug 2017, 08:49
Egal was, aber bitte zumindest die SQL Statements parametrisieren - Stichwort: SQL Injection
Ach Stevie, das ist ein bekanntest Problem was ignoriert wird
Das ist schon bei unserem ersten Suchfeld möglich
Bei welcher Firma arbeitest du ?


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. ).
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#10

AW: Fragerunde. Wie macht ihr das? Speichern von Objekten

  Alt 5. Aug 2017, 09:02
Moin...
Zitat:
Die Frage ist , wie speichert ihr Objekte in die Datenbank?
Wie schon erwähnt, gibt es einige externe Frameworks. Die haben alle einen Einarbeitungsaufwand. Es gibt abere auch eine Möglichkeit über den klassischen Weg mit einfachen Interfaces. Dafür habe ich ein Tutorial geschrieben. http://www.delphipraxis.net/193418-%...datenbank.html
Zitat:
Hier gilt das Motto, so wenig SQL in Quellcode,
Das ist nicht das Wichtigste. Vielmehr sollten die SQL nicht über den gesamten Quelltext verteilt sein.
Wenn du auch das gesamte SQL (Query, SP usw.) aus dem Quelltext auslagern willst, dann kann ich dir das Tutorial von MaBuSE empfehlen. http://www.delphipraxis.net/49505-sq...einbinden.html
Zitat:
Egal was, aber bitte zumindest die SQL Statements parametrisieren
Da kommst nicht drumherum.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 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