面向 Java 开发人员的 db4o 指南: 查询,更新和一致性
2010-04-01 00:00:00 来源:WEB开发网清单 4. 插入前进行查询
// ... as before
ObjectContainer db = null;
try
{
db = Db4o.openFile("persons.data");
...
// We want to add Brian Goetz to the database; is he already there?
if (db.get(new Person("Brian", "Goetz", 0).hasNext() == false)
{
// Nope, no Brian Goetz here, go ahead and add him
db.set(new Person("Brian", "Goetz", 39));
db.commit();
}
}
在这个特定例子中,假设系统中 Person 的惟一性是其姓名的组合。因此,当在数据库中搜索 Brian 时,只需要对 Person 实例查找这些属性。(或许几年前已经添加过 Brain —— 当时他还不到 39 岁。)
如果希望修改数据库中的对象,那么从容器中检索对象,使用某种方式进行修改,然后将其存储回数据库即可,如图 5 所示:
清单 5. 更新对象
// ... as before
ObjectContainer db = null;
try
{
db = Db4o.openFile("persons.data");
...
// Happy Birthday, David Geary!
if ((ObjectSet set = db.get(new Person("David", "Geary", 0))).hasNext())
{
Person davidG = (Person)set.next();
davidG.setAge(davidG.getAge() + 1);
db.set(davidG);
db.commit();
}
else
throw new MissingPersonsException(
"David Geary doesn't seem to be in the database");
}
更多精彩
赞助商链接