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(); Listlist = 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 Listlist = 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