面向 Java 开发人员的 db4o 指南: 查询,更新和一致性
2010-04-01 00:00:00 来源:WEB开发网很明显,要对这种方法进行大量的调优以进行尝试,例如捕获所有的异常类型并将它们作为运行时异常重新抛出,或者返回 ObjectSet 本身(而非 true/false),甚至返回包含 ObjectSet 内容的数组对象(ObjectSet 的内容使得查看返回数组的长度非常简单)。然而,可以从清单 7 中很明显地看到,这种用法并没有比基本的 QBE 版本简单多少。
清单 7. 可以工作的实用方法
// Is Brian already in the database?
if (Util.identitySearch(
db, Person.class, {"firstName", "lastName"}, {"Brian", "Goetz"}) == false)
{
db.set(new Person("Brian", "Goetz", 39));
db.commit();
}
事实上,对于存储的类本身,这种实用方法的实用性 开始变得明显,如清单 8 所示:
清单 8. 在 Person 内使用实用方法
public class Person
{
// ... as before
public static boolean exists(ObjectContainer db, Person instance)
{
return (Util.identitySearch(db, Person.class,
{"firstName", "lastName"},
{instance.getFirstName(), instance.getLastName()});
}
}
或者,您可以调整该方法来返回找到的实例,这样 Person 实例使它的 OID 正确地关联,等等。关键要记住可以在 db4o 基础架构之上构建方便的方法,从而使 db4o 更加易于使用。
注意:使用 db4o SODA 查询 API 对存储在磁盘的底层对象执行这类查询是一种更有效的方法,但这稍微超出了本文讨论的范围,所以我将在以后讨论这些内容。
更多精彩
赞助商链接