我正在使用两种不同的方法来查询db4o中的对象,我想讨论一下这个问题。
1)在第一个示例中,我创建了一个ObjectContainer实例,打开连接,然后关闭它。
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "User");
ObjectSet result = db.queryByExample(user);
db.close();
第二个示例中,我创建了一个ObjectServer,并让连接在整个应用程序的生命周期中保持打开状态。我还从ObjectServer打开ObjectContainer,进行查询,然后关闭它:
ObjectServer userDb = Db4oClientServer.openServer(Db4oClientServer.newServerConfiguration(), "User", 0);
ObjectContainer client = client = userDb.openClient();
ObjectSet result = client.queryByExample(user);
client.close();
--
这两种方法的主要区别是什么?如果我从不关闭ObjectServer,会有危险吗?
在我看来,第二种方法更好,因为如果两个不同的实例调用第一个示例中显示的方法,则第二个调用者将收到异常,因为数据库将被锁定,但在第二个示例中,我没有这样的问题。由于我对db4o没有太多经验,因此我想问一下自己是否走在正确的道路上。