Hallo,
ich habe eine ähnliche Frage hier schon mal gestellt, allerdings haben die Vorraussetzungen sich etwas geändert. Darum noch mal von vorne:
Eine Perl-Applikation besteht aus verschiedenen Klassen (Shop, Artikel, Hersteller,Kunde ....) z.B. ein Artikel besteht u.a. aus mehrere Bild-Objekten, einem Hersteller-Objekt, Attribut-Objekten .... Beim Schreiben des Artikels in die DB soll nun eine mysql-Transaktion zum Einsatz kommen.
Alle Klassen erben von der Shop-Klasse die Fähigkeit ein connect auf die DB zu machen. Allerdings wird dabei jedesmal ein neues DB-Handle erzeugt, womit meine Transaktion in die Hosen geht.
Als einzigste Lösung fällt mir ein, in der Applikation selber ein initiales Shop-Objekt zu erzeugen, dass eine DB-Verbindung aufbaut. Dieses Handle wird allen anderen Objekten bei der Initialisierung übergeben. Initialisiert ein Objekt ein weiteres, übergibt es dieses Händle einfach weiter. Aber irgendwie gefällt mir das nicht so recht ... Irgendwann hat die DB ein Timeout und das Handle ist ungültig ... Mir schwebt eher eine Lösung vor, bei der das aktuell gültige DB-Handle via Methodenaufruf abgeholt werden kann und alle Objekte bekommen so automatsich das gleiche Handle. Das erfolgt sinnigerweise unmittelbar vor Start der DB-Transaktion. Aber wie bewerkstellige ich das?.
Oder gibt es für sowas eine ganz andere Herangehensweise?
Jens