Я использую два разных способа запроса объектов в db4o, и я хотел бы обсудить это.
1) В этом первом примере я создаю экземпляр ObjectContainer, открываю соединение и затем закрываю его.
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "User");
ObjectSet result = db.queryByExample(user);
db.close();
2) Во втором примере я создаю ObjectServer и открываю соединение в течение всего жизненного цикла приложения. Я также открываю ObjectContainer из ObjectServer, делаю запрос и затем закрываю его:
ObjectServer userDb = Db4oClientServer.openServer(Db4oClientServer.newServerConfiguration(), "User", 0);
ObjectContainer client = client = userDb.openClient();
ObjectSet result = client.queryByExample(user);
client.close();
-
В чем основное различие между обоими методами? Это опасно, если я никогда не закрою ObjectServer?
По моему мнению, второй метод лучше, потому что если два разных экземпляра вызывают метод, показанный в первом примере, второй вызывающий вызов получит исключение, потому что база данных будет заблокирована, но во втором примере я не есть такая проблема. Поскольку у меня нет большого опыта работы с db4o, я предпочитаю спросить, нахожусь ли я на правильном пути.