WEB开发网
开发学院软件开发Java 面向 Java 开发人员的 db4o 指南: 结构化对象和集... 阅读

面向 Java 开发人员的 db4o 指南: 结构化对象和集合

 2010-04-01 00:00:00 来源:WEB开发网   
核心提示: 跟本系列早先的探察测试示例一样,在每次测试完成后,面向 Java 开发人员的 db4o 指南: 结构化对象和集合(4),我使用带 @After 注释的 deleteDatabase() 方法来删除数据库,以使各部分能够很好地分隔开,因为 Employee 是一个 Person,由于建立在 Jav

跟本系列早先的探察测试示例一样,在每次测试完成后,我使用带 @After 注释的 deleteDatabase() 方法来删除数据库,以使各部分能够很好地分隔开。

让我们运行几个查询……

在实际运行这个方法之前,我将会检查在系统中使用 Employee 会有哪些效果(如果有的话)。希望从数据库获取所有 Employee 信息,这很正常 — 或许当公司破产时他们将会全部被解雇(是的,我知道,这样想很残酷,但我只是对 2001 年的 dot-bomb 事故还有点心有余悸)。最初的测试看起来很简单,正如清单 4 所示:

清单 4. Ted 说,“你被解雇了!”

@Test public void testSimpleInheritanceQueries() 
{ 
  ObjectSet employees = db.get(Employee.class); 
  while (employees.hasNext()) 
    System.out.println("Found " + employees.next()); 
} 

当进行测试时,将会产生一个有趣的结果:数据库(我自己、Ben、Neal、Brian 和 Bruce)中只返回了 Employee。OODBMS 识别出查询受到子类型 Employee 的显式约束,并且只选择了符合返回条件的对象。因为其他对象(配偶或者孩子)不属于 Employee 类型,他们不符合条件,所以没有被返回。

当运行一个返回所有 Person 的查询时,将会更加有趣,如下所示:

清单 5. 找到所有人!

@Test public void testSimpleNonEmployeeQuery() 
{ 
  ObjectSet persons = db.get(Person.class); 
  while (persons.hasNext()) 
    System.out.println("Found " + persons.next()); 
} 

当运行这个查询时,每个单一对象 — 包括以前返回的所有 Employee — 都被返回了。从某种程度上说,这是有意义的。因为 Employee 是一个 Person,由于建立在 Java 代码中的实现继承关系,因此满足返回查询的必须条件。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:面向 Java 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接