<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Objekte, Tabellen und wie die beiden zueinander finden]]></title><description><![CDATA[<p>Erstmal ein „Hallo“ an alle die Zeit haben sich das hier durchzulesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>Wie hoffentlich der Titel schon sagt, dreht’s sich hier um C++ Objekte, die mit Hilfe einer Datenbank gespeichert werden sollen(MySQL).<br />
Zu dem Thema gibt’s ja ein paar kommerzielle Produkte, die ich mir aber momentan nicht leisten kann. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Daher würde es mich interessieren, wie ihr dieses Problem angehen würdet oder vielleicht sogar schon angegangen habt?!<br />
Existieren dazu Entwurfsmuster? Wenn ja, welche habt ihr schon erfolgreich eingesetzt?</p>
<p>Vielleicht hat ja jemand von euch einen guten Tipp für mich, wie ich das geschickt lösen könnte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>PS: Danke für's Lesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162415/objekte-tabellen-und-wie-die-beiden-zueinander-finden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 07:13:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162415.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Oct 2006 10:28:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekte, Tabellen und wie die beiden zueinander finden on Wed, 18 Oct 2006 10:28:23 GMT]]></title><description><![CDATA[<p>Erstmal ein „Hallo“ an alle die Zeit haben sich das hier durchzulesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>Wie hoffentlich der Titel schon sagt, dreht’s sich hier um C++ Objekte, die mit Hilfe einer Datenbank gespeichert werden sollen(MySQL).<br />
Zu dem Thema gibt’s ja ein paar kommerzielle Produkte, die ich mir aber momentan nicht leisten kann. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Daher würde es mich interessieren, wie ihr dieses Problem angehen würdet oder vielleicht sogar schon angegangen habt?!<br />
Existieren dazu Entwurfsmuster? Wenn ja, welche habt ihr schon erfolgreich eingesetzt?</p>
<p>Vielleicht hat ja jemand von euch einen guten Tipp für mich, wie ich das geschickt lösen könnte. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>PS: Danke für's Lesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1156946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1156946</guid><dc:creator><![CDATA[nucknuck]]></dc:creator><pubDate>Wed, 18 Oct 2006 10:28:23 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, Tabellen und wie die beiden zueinander finden on Wed, 18 Oct 2006 10:50:14 GMT]]></title><description><![CDATA[<p>Nur mal ein paar spontane Gedanken:</p>
<p>Ein einzelnes Objekt wirst du wohl kaum in einer Datenbank ablegen wollen, also hast du vermutlich einen ganzen Haufen von Objekten (in irgendeinem Container gelagert), richtig? Dann würde ich diesen Container einer DB-Tabelle zuordnen (die Spalten der Tabelle entsprechen den relevanten Attributen deiner Objekte) und die Objekte jeweils als Datensätze dort eintragen (und wieder auslesen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1156960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1156960</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 Oct 2006 10:50:14 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, Tabellen und wie die beiden zueinander finden on Wed, 18 Oct 2006 10:58:16 GMT]]></title><description><![CDATA[<p>Genau.<br />
Es ist unwarscheinlich, das ich nur ein einzelnes Objekt speichern werden.<br />
Es existieren Objekte mit verschiedenen Typen. Für jeden Typ werde ich wohl eine zuständigen Klasse scheiben müssen, die den genauen Typ, der gespeichert werden soll, kennt.<br />
Oft sind Objekte untereinander mittels Pointer verknüpft.<br />
Damit ich nicht direkt alle Objekte laden muss, die mit meinem gespeicherten Objekt verbunden sind, werde ich das wohl über einen Proxy regeln müssen.<br />
Der kann mir die Objekte dann laden, wenn sie wirklich benötigt werden.</p>
<p>Ich suche nach einem Muster, mit dem ich diese immer wiederkehrende Aufgabe recht leicht erschlagen kann.<br />
Dazu hab ich mir mal das &quot;Persistence Framework&quot; von Larman angesehen.<br />
Kennt das jemand?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1156973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1156973</guid><dc:creator><![CDATA[nucknuck]]></dc:creator><pubDate>Wed, 18 Oct 2006 10:58:16 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, Tabellen und wie die beiden zueinander finden on Wed, 18 Oct 2006 11:21:59 GMT]]></title><description><![CDATA[<p>Wie du selber schon festgestellt hast, existieren diverse Produkte und die kosten Geld. Und diese kosten aus ganz bestimmten Grund Geld. Weil das selber machen wahrscheinlich teurer (Arbeitszeit und Nerven) kommt als wenn man das Produkt einmal kauft. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Es gibt aber auch eine kostenlose OO-DB, wie EyeDB. Diese ist aber leider auf Unix- und Linux-Server beschränkt (nix mit Windows). Cache ist auch cool, und ist sogar recht günstig, wenn man kommerziell was machen will.</p>
<p>Wenn du eine RDBMS benutzen willst, bräuchte man idealerweise ein O/R-Mappingtool. Kostenlose O/R-Mappingtools gibt es aber für C++ glaube ich nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Wie macht man sowas? Da ist viel Handarbeit nötigm, wenn kein Tool/Lib da ist. Am einfachsten ist es, wenn man z.B. jedes Klasse auf eine Tabelle abbildet. Und jedes Attribit in eine Tab-Spalte packt. Halt O/R-Mapping...</p>
<p>Und dann einfach den Code dazu schreiben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>O/R ist leider immer doof. Ich favorisiere ja immer noch OODBMS, aber die wollen sich einfach nicht in der OO-Welt durchsetzen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1156988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1156988</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 18 Oct 2006 11:21:59 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, Tabellen und wie die beiden zueinander finden on Wed, 18 Oct 2006 11:32:37 GMT]]></title><description><![CDATA[<p>Für das sture O/R-Mapping gibt es zwei Ansätze.</p>
<p>Nehmen wir an, wir haben in einem Container folgende Konstellation:</p>
<p>container&lt;oberklasse*&gt;<br />
class A : oberklasse;<br />
class B : oberklasse;<br />
// A und B unterscheiden sich in Attributen - ist der Unterschied nur in Methoden, macht das für die DB keinen Unterschied.</p>
<p>Variante 1)</p>
<p>In der DB legt man für den Container 2 Tabellen an - eine für die Klasse A und eine für die Klasse B, da natürlich jede Klasse eigene Attribute hat. Nun mappt man alle Objekte von A in die Tabelle A, und genauso für B.</p>
<p>Variante 2)</p>
<p>In der DB legt man für den Container 3 Tabellen an - eine für die Oberklasse, eine für die zusätzlichen Attribute von A, und eine für die zusätzlichen Attribute von B. Ein Objekt der Klasse A wird also in die Tabelle Oberklasse und die Tabelle A geschrieben, analog für B. Die eindeutige Objekt-ID bekommt die Oberklassen-Tabelle, und wird in den Tabellen A und B ebenso benutzt. Damit kann man die Tabelle Oberklasse durchlaufen und damit den gemeinsamen Anteil ermitteln, aber auch über die Objekt-ID auf die Attribute von A und B kommen. Natürlich muß in der Oberklassen-ID auch gespeichert werden, welcher Typ vorliegt, man muß ja wissen, in welche Tabelle (A oder <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> man reinschauen muß.</p>
<p>Variante 2 hat offensichtliche Vorteile, wenn man häufiger über die Gemeinsamkeiten geht, und es ist bei A) schwierig zu sortieren. Hat man aber eher Zugriffe über die Unterschiedlichen Klassen, so kann A) geeigneter sein.</p>
<p>Das ist so ein Grundansatz als Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1157002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1157002</guid><dc:creator><![CDATA[Marc++us]]></dc:creator><pubDate>Wed, 18 Oct 2006 11:32:37 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, Tabellen und wie die beiden zueinander finden on Wed, 18 Oct 2006 12:05:51 GMT]]></title><description><![CDATA[<p>Marc++us schrieb:</p>
<blockquote>
<p>Variante 2)</p>
<p>In der DB legt man für den Container 3 Tabellen an - eine für die Oberklasse, eine für die zusätzlichen Attribute von A, und eine für die zusätzlichen Attribute von B. Ein Objekt der Klasse A wird also in die Tabelle Oberklasse und die Tabelle A geschrieben, analog für B. Die eindeutige Objekt-ID bekommt die Oberklassen-Tabelle, und wird in den Tabellen A und B ebenso benutzt. Damit kann man die Tabelle Oberklasse durchlaufen und damit den gemeinsamen Anteil ermitteln, aber auch über die Objekt-ID auf die Attribute von A und B kommen. Natürlich muß in der Oberklassen-ID auch gespeichert werden, welcher Typ vorliegt, man muß ja wissen, in welche Tabelle (A oder <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> man reinschauen muß.</p>
</blockquote>
<p>Ja, so oder zumindest so ähnlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> hatte ich mir das auch gedacht.<br />
Zusätzlich hab ich mir das Buch von Frau Prof. Balzert (Lehrbuch der Objektmodellierung) angesehen und dort war die Rede von dem <strong>Database Broker</strong> Pattern.<br />
Das ganze funktioniert dort über drei Schichten:</p>
<p>1. Abstrakter Broker<br />
Definiert die Algorithmen zum Laden und Speichern mittels Schablonenmethoden-Muster</p>
<p>2. Datenbank Broker<br />
Stellt den Zugriff auf die Datenbank her und kümmert sich um die SQL Anfragen</p>
<p>3. Fachkonzept Broker<br />
- Erzeugt das Fachobjekt aus den Daten des Datenbank Brokers.</p>
<p>In diesem Pattern werden alle Objekte an Hand der ObjektID geladen oder gespeichert. Klar, wenn ich die ObjektID hab, dann finde ich auch mein Objekt in der Datenbank.<br />
Falls mir jedoch nur andere Eigenschaften bekannt sind, müßte ich ja zuerst die ObjektID ermitteln und dann das Objekt mit Hilfe der ObjektID komplett laden.<br />
Wenn ich aber schon dabei bin die ObjektID zu ermitteln, kann ich mir auch direkt die anderen Eigenschaften des Objekts liefern lassen. Dann brauche ich ja keine Broker Klassen.</p>
<p>Hoffentlich hab ich mich einigermaßen verständlich ausgedrückt und euch ist klar, wie mein Problem aussieht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1157035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1157035</guid><dc:creator><![CDATA[nucknuck]]></dc:creator><pubDate>Wed, 18 Oct 2006 12:05:51 GMT</pubDate></item></channel></rss>