Objekte in MySQL Datenbank speichern

Objekte in MySQL und Objektmanager in Perl

DB-Design: Create Statement

CREATE TABLE `objects` ( `oid` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '', `att` varchar(128) NOT NULL DEFAULT '', `val` longtext DEFAULT NULL, PRIMARY KEY (`oid`,`att`), KEY `oid` (`oid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci

Wie zu sehen ist hat die Tabelle lediglich 3 Felder. Das ermöglicht Objekte mit beliebig vielen Eigenschafen als Attribut => Value Paare. Mit der für das Feld oid (Object-ID) gesetzten Collation wird ebendieses Feld case-sensitive.

Objektmanager in Perl

use strict; use warnings; my $browse = sub{ my $self = shift; if( my $dbh = $self->dbh('myweb') ){ $self->{STASH}{create} = $dbh->selectrow_arrayref("show create table objects")->[1]; $self->{STASH}{module} = $dbh->selectrow_hashref("select * from rcs where name='Objects.pm' order by id desc limit 1")->{content}; } else{ $self->{STASH}{create} = "Code kann temp. nicht gzeigt werden, bitte später versuchen."; $self->{STASH}{module} = "Code kann temp. nicht gzeigt werden, bitte später versuchen."; } }; ########################################################################### { browse => $browse }

Alle Funktionen sind statisch, also Klassenmethoden.

Anwendung

use strict; use warnings; use Objects; Objects::store( foo => {name => 'foo'}); Objects::store( bar => {name => 'bar'}); my $foo = Objects::fetch('foo'); my $bar = Objects::fetch('bar','Foo'); # $bar as instance of Class Foo print Objects::names(); # foo bar print Objects::rm('foo','bar'); # 2

Die zu speichernden Objekte haben also einen Namen und die Eigenschaften als Schlüssel => Werte - Paare. Mit der fetch()-Methode gibt es die Möglichkeit das Objekt als Instanz derjenigen Klasse zu übergeben deren Name gleich mit übergeben wird.


Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. s​os­@rolf­rost.de.