面向 Java 开发人员的 db4o 指南: 查询,更新和一致性
2010-04-01 00:00:00 来源:WEB开发网与 POJO 类似,Person 并不是一个复杂的类。它由三个字段和一些基本的支持类似 POJO 行为的方法组成,即 toString() 和 equals()。(阅读过 Joshua Bloch 的 Effective Java 的读者将注意到我忽略了 hashCode() 实现,很明显这违背了 Rule 8。作者经常使用的典型说法就是,我将 hashCode() 留给 “读者进行练习”,这通常意味着作者不想解释或认为没有必要提供手头的示例。我同样将它留给读者作为练习,请自行判断我们这里的练习属于哪种情况。
在清单 2 中,我创建了 6 个对象,将它们放入了一个文件中,然后使用 QBE 调用名字匹配 “Brian” 模式的两个对象。这种查询使用原型对象(被传入到 get() 调用的对象)来确定对象是否匹配数据库查询,并返回匹配条件的对象的 ObjectSet(实际上是一个集合)。
清单 2. Query by Example
import com.db4o.*;
import com.tedneward.model.*;
public class Hellodb4o
{
public static void main(String[] args)
throws Exception
{
ObjectContainer db = null;
try
{
db = Db4o.openFile("persons.data");
Person brian = new Person("Brian", "Goetz", 39);
Person jason = new Person("Jason", "Hunter", 35);
Person clinton = new Person("Brian", "Sletten", 38);
Person david = new Person("David", "Geary", 55);
Person glenn = new Person("Glenn", "Vanderberg", 40);
Person neal = new Person("Neal", "Ford", 39);
db.set(brian);
db.set(jason);
db.set(clinton);
db.set(david);
db.set(glenn);
db.set(neal);
db.commit();
// Find all the Brians
ObjectSet brians = db.get(new Person("Brian", null, 0));
while (brians.hasNext())
System.out.println(brians.next());
}
finally
{
if (db != null)
db.close();
}
}
}
更多精彩
赞助商链接