db4o jest bazą embedded przechowującą całe obiekty. Całość działa szybko i jest bardzo prosta w implementacji.
Potrzebne biblioteki pobieramy z tej strony:
http://db4o.com/DownloadNow.aspx -> db4o 8.0 for Java (zip, 40.9 mb).
Rejestracja jest opcjonalna.
Wg pliku \db4o-8.0-java\db4o-8.0\lib\readme.html wystarczy nam biblioteka db4o-8.0.184.15484-core-java5.jar ale do projektu dodajemy również db4o-8.0.184.15484-cs-java5.jar ponieważ wg API (dołączone do paczki) potrzebna nam metoda w klasie Db4o jest zdeprecjonowana.
Oto krótki przykład zastosowania:
/* Main.java */
import com.db4o.ObjectContainer;
import com.db4o.ObjectServer;
import com.db4o.cs.Db4oClientServer;
import com.db4o.query.Predicate;
import java.util.List;
public class Main
{
static ObjectServer os;
public static void main(String[] args)
{
os = Db4oClientServer.openServer("TestDB", 0);
saveToDB();
loadFromDB();
os.close();
}
public static void saveToDB()
{
ObjectContainer oc = os.openClient();
oc.store(new SomeObject());
oc.close();
}
public static void loadFromDB()
{
ObjectContainer oc = os.openClient();
List list = oc.query(new Predicate()
{
public boolean match(SomeObject so)
{
return so.getClass().getName().equals("SomeObject");
}
});
for(SomeObject so : list)
{
System.out.println(so.x+" "+so.y);
}
oc.close();
}
}
/* SomeObject.java */
import java.util.Random;
public class SomeObject
{
public int x;
public int y;
public SomeObject()
{
Random r = new Random();
x = r.nextInt(10);
y = r.nextInt(100);
}
}
Wynik 3-krotnego uruchomienia aplikacji, widać że dane są zachowywane:
run: 6 58 3 42 6 22 BUILD SUCCESSFUL (total time: 1 second)
Jak widać potrzebne obsługa bazy jest banalnie prosta, potrzebne linie to:
ObjectServer os = Db4oClientServer.openServer("TestDB", 0); //otworzenie serwera
ObjectContainer oc = os.openClient(); //otworzenie klienta
oc.store(new SomeObject()); //zapisanie obiektu do bazy
//pobranie obiektów SomeObject z bazy
List list = oc.query(new Predicate()
{
public boolean match(SomeObject so)
{
return so.getClass().getName().equals("SomeObject");
}
});
oc.close(); //zamknięcie klienta
os.close(); //zamknięcie serwera
Metoda openServer() w razie potrzeby utworzy nowy serwer pod podaną nazwą, a jeśli chcemy aby był to serwer TCP zamiast 0 podajemy numer portu pod jakim ma działać.
Pokazane tutaj zastosowanie jest najprostszym z możliwych ale baza ta jest o wiele bardziej rozbudowana.

Brak komentarzy:
Prześlij komentarz