当前位置: 网学 > 编程文档 > JAVA > 正文

面向Java开发人员db4o指南:数组和集合

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
ot;11223")); 

Person kayla = maggie.haveBaby("Kayla", Gender.FEMALE); 
kayla.setAge(8); 

Person julia = maggie.haveBaby("Julia", Gender.FEMALE); 
julia.setAge(6); 

db.set(bruce); 

db.commit(); 
}

  注意,存储整个家庭所做的工作仍然不比存储单个 Person 对象所做的工作多。您可能还记得,在上一篇文章中,由于存储的对象具有递归的性质,当把 bruce 引用传递给 db.set() 调用时,从 bruce 可达的所有对象都被存储。不过眼见为实,让我们看看当运行那个简单的探察测试时,实际上会出现什么情况。首先,测试当调用随 Person 存储的各种 Address 时,是否可以找到它们。然后,测试是否孩子们也被存储。 

  清单 5. 搜索住房和家庭 

@Test public void testTheStorageOfAddresses()
{
List<Person> maleTates = 
db.query(new Predicate<Person>() {
public boolean match(Person candidate) {
return candidate.getLastName().equals("Tate") &&
candidate.getGender().equals(Gender.MALE); 
}
}); 
Person bruce = maleTates.get(0); 

Address homeAndWork = 
new Address("5 Maple Drive", "Austin",
"TX", "12345"); 
Address vacation =
new Address("10 Wanahokalugi Way", "Oahu",
"HA", "11223"); 

assertTrue(bruce.getHomeAddress().equals(homeAndWork)); 
assertTrue(bruce.getWorkAddress().equals(homeAndWork)); 
assertTrue(bruce.getVacationAddress().equals(vacation)); 
}

@Test public void testTheStorageOfChildren() 

List<Person> maleTates = 
db.query(new Predicate<Person>() {
public boolean match(Person candidate) {
return candidate.getLastName().equals("Tate") &&
candidate.getGender().equals(Gender.MALE); 
}
}); 
Person bruce = maleTates.get(0); 

int n = 0; 
for (Iterator<Person> children = bruce.getChildren(); 
children.hasNext(); 
)
{
Person child = children.next(); 

System.out.println(child); 

if (n==0) assertTrue(child.getFirstName().equals("Kayla")); 
if (n==1) assertTrue(child.getFirstName().equals("Julia")); 

n++; 
}
}

  理解关系  

  您可能会感到奇怪,清单 5 中显示的基于 Collection 的类型(ArrayList)没有被存储为 Person 类型的 “dependents”,而是被存储为一个成熟的对象。这还说得过去,但是当对对象数据库中的 ArrayList 运行一个查询时,它可能,有时候也确实会导致返回奇怪的结果。由于目前数据库中只有一个 ArrayList,所以还不值得运行一个探察测试,看看当对它运行一个查询时会出现什么情况。把这作为留给您的练习。 

  自然地,存储在一个集合中的 Person&nb

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号