Konfiguration

Über die Methode DataSource::getInstanceFromProperties() lässt sich die Datenquelle über Eigenschaften - zum Beispiel aus einer Property-Datei - konfigurieren.

# Uniform Resource Identifier der Datenquelle
uri=mysql://root:secret@localhost:3306/alvine/object

Eigenschaften

Eigenschaft Beschreibung Beispiel
uri URI der Datenquelle mysql://root:secret@localhost:3306/alvine/object

URI

Die URI hat den klassischen Aufbau aus Protokoll, Zugangsdaten, Server und Pfad.

mysql://root:secret@localhost:3306/alvine/object 
   ┃      ┃     ┃       ┃       ┃     ┃      ┃
   ┃      ┃     ┃       ┃       ┃     ┃      ┗━━━ Name der Tabelle
   ┃      ┃     ┃       ┃       ┃     ┗━━━ Datenbank      
   ┃      ┃     ┃       ┃       ┗━━━ Port  
   ┃      ┃     ┃       ┗━━━ Server      
   ┃      ┃     ┗━━━ Passwort     
   ┃      ┗━━━ Benutzername 
   ┗━━━ Protokoll 

Das Protokoll muss immer mysql sein, ein anderes Protokoll führt zu einer \Alvine\Persistence\DataObjectException Exception. Wir keine Tabelle angegeben, so wird die Konstante DataSource::DEFAULTTABLE mit dem Wert object verwendet.

Beispiel

Über folgende Anweisungen werden erst die Eigenschaften eingelesen und im Anschluß das Datenobjekt erstellt.

// Eigenschaftsdatei definieren
$file=new \Alvine\IO\File\File('datasource.properties', new \Alvine\IO\File\Directory(__DIR__));

// Eigenschaften einlesen
$properties=new \Alvine\Types\Configuration\Properties($file);

// Datenquelle erstellen
$source=\Alvine\Persistence\Provider\MySQL\DataSource::getInstanceFromProperties($properties);

Objektstorage

Für die Verwendung mit dem Objektstorage muss folgende Datenbank angelegt werden.

CREATE TABLE IF NOT EXISTS `object` (
   `sys_ID` varchar(255) NOT NULL 
            COMMENT 
            'ID des Objektes, bei Alvine-Objekten ist dies eine UUID',
   `sys_so` text NOT NULL 
            COMMENT 'Serialisierte Objektdaten',
   `sys_creation` datetime NOT NULL 
            COMMENT 
            'Dieses Objekt wurde zu diesem Zeitpunkt erstellt',
   `sys_lastupdate` datetime NOT NULL 
            COMMENT 
            'Die letzte Änderung am Objekt erfolgte zu dieser Zeit',
   PRIMARY KEY  (`sys_ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 
            COMMENT='Speicher für Alvine-Objekte';