====== db4o ====== [[wpde>db4o]] steht für "database for objects" und ist eine bjektorientierte [[Datenbanken|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. ===== 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 gefunden = db.Query(); 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(); 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 monis = db.Query(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 allePersonen = db.Query(); 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();