开源面向对象数据库 db4o 之旅,第 3 部分: 深入db4o
2010-04-01 00:00:00 来源:WEB开发网修改数据是如此的简单,通过 NQ 查询出 People 对象,接着修改其地址,最后保存即可。现在我们来看看修改是否成功, 打开 ObjectManager ,如图 1 所示,我们可以看到数据库里的用户数据已经更新了。
图1. 修改地址
查看原图(大图)
与本系列文章第二部分不同的是,我们利用 ObjectSet<People> result 来获取返回结果,而不是 List<People> list。查阅 ObjectSet 的 API 我们发现 ObjectSet 实际上继承了 java.util.List 和 java.util.Iterator。为什么要继承两个接口?这是由于 db4o 为了方便开发者而有意这样设计的,db4o 的设计目标就是轻量级,这样的继承方式为 ObjectSet 提供了多种特性,而无需开发者在多个集合接口之间转换。
场景二
让我们考虑下面这个场景:
由于工作原因,“张三”要离开省会去其他城市发展,他的汽车也要在那里使用,为了方便,他还是决定重新更换为本地牌照。
这次我们几乎和场景一采用同样的代码,但结果却不同(清单2):
清单2. 修改地址和车牌(不成功)
package com;
import bo.People;
import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.db4o.query.Predicate;
public class DB4OTest{
public static void main(String[] args){
//打开数据库
ObjectContainer db = Db4o.openFile("auto.yap");
try{
ObjectSet<People> result = db.query(new Predicate<People>() {
public boolean match(People people) {
return people.getName().equals("张三");
}
});
People people = result.next();
//修改地址
people.setAddress("绵阳市xx区xxx号");
//修改车牌号
people.getAutoInfoList().get(0).setLicensePlate("川B00000");
db.set(people);
}finally{
//关闭连接
db.close();
}
}
}
- ››面向对象的JS-私有成员变量实现方式
- ››开源平台Meego和Android之间的对弈
- ››开源的Kingthy.Mail邮件组件库
- ››面向对象的JavaScript (一、对象基础,使用函数来...
- ››开源飞信Openfetion最新发布v1.8版
- ››开源重复数据删除技术纵览
- ››面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS
- ››开源的 iPhone 杀手终于到来
- ››开源有优势:Android首超Windows Mobile
- ››对象存储不给高性能计算添堵
- ››面向 Java Web 应用程序的 OpenID,第 2 部分: 为...
- ››开源只不过是个幌子 揭示 Android 的真面目
更多精彩
赞助商链接