Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:db4o

Dies ist eine alte Version des Dokuments!


Inhaltsverzeichnis

db4o

db4o steht für „database for objects“ und ist eine objektorientierte Datenbank. Die Inhalte werden also nicht in Tabellen abgelegt, sondern direkt als Objekt gespeichert.

Für Java

Ich habe mir das Paket angeschaut und ein Beispiel für Java programmiert und mitgefilmt. Das Ganze habe ich in der IDE Eclipse durchgeführt.

:schule:db4o_-_erste_schritte.mp4 512,384

Für C# und .NET

Für unsere Versuche benötigen wir eine einfache Klasse „Person“.

    class Person
    {
        string name;
 
        public Person(string meinName)
        {
            name = meinName;
        }
 
        public void NameÄndern(string neuerName)
        {
            name = neuerName;
        }
 
        public Boolean Heißt(String einName)
        {
            return name.Equals(einName);
        }
 
        public override string ToString()
        {
            return name;
        }
    }

Um db4o benutzen zu können, importieren wir die nötigen Klassen.

using Db4objects.Db4o;

In einem einfachen Konsolenprogramm erzeugen wir nun eine Datenbank und zwei Personen Max und Moni. Diese werden anschließend in der Datenbank gespeichert.

IEmbeddedObjectContainer db = Db4oEmbedded.OpenFile("datenbank.db4o");
 
Console.WriteLine("Nun erstellen wir Max und Moni...");
Person max = new Person("Max");
Person moni = new Person("Moni");
 
Console.WriteLine("... und speichern sie in der Datenbank ab");
db.Store(max);
db.Store(moni);

Um an die Objekte in der Datenbank zu gelangen, lassen wir uns alle Personen ausgeben, die in der Datenbank gespeichert sind.

Console.WriteLine("Wir geben alle Personen aus, die sich in der Datenbank befinden.");
// Wir suchen nach allen Personen in der Datenbank
IList<Person> gefunden = db.Query<Person>();
foreach (Person person in gefunden)
{
    Console.WriteLine("> " + person.ToString());
}
Ausgabe:
> Max
> Moni

Wenn wir nachträglich ein Objekt ändern, müssen wir der Datenbank die Änderung mitteilen. Das machen wir nun, indem wir den Namen von Max ändern.

Console.WriteLine("Wir können die Objekte auch ändern: z.B. den Namen.");
max.NameÄndern("Maxi");
Console.WriteLine("Und speichern das aktualisierte Obekt wieder ab.");
db.Store(max);
 
Console.WriteLine("So sieht der Inhalt der Datenbank nun aus:");
gefunden = db.Query<Person>();
foreach (Person person in gefunden)
{
    Console.WriteLine("> " + person.ToString());
}
Ausgabe:
> Maxi
> Moni

Wir können die Datenbank gezielt nach bestimmten Objekte durchsuchen. Dazu übergeben wir der Query-Methode ein Prädikat, das für alle Objekte erfüllt sein muss, die wir suchen.

Console.WriteLine("Wir können auch nur bestimmte Personen ausgeben - z.B. alle Monis");
IList<Person> monis = db.Query<Person>(p => p.Heißt("Moni"));
foreach (Person eineMoni in monis)
{
    Console.WriteLine("> " + eineMoni);
}
Ausgabe:
> Moni

Zum Schluss löschen wir alle Personen wieder aus der Datenbank.

Console.WriteLine("Nun löschen wir alle Personen aus der Datenbank.");
IList<Person> allePersonen = db.Query<Person>();
 
foreach (Person person in allePersonen) 
{
    Console.WriteLine("Lösche " + person.ToString());
    db.Delete(person);
}
Ausgabe:
> Lösche Maxi
> Lösche Moni

Um die Datenkbankverbindung sauber zu beenden, schließen wir zum Schluss die Datenbank.

Console.WriteLine("Am Ende schließen wir unsere Datenbank wieder");
db.Close();
schule/db4o.1398279243.txt.gz · Zuletzt geändert: 2017-04-19 08:39 (Externe Bearbeitung)