开源面向对象数据库 db4o 之旅,第 3 部分: 深入db4o
2010-04-01 00:00:00 来源:WEB开发网如图 4 所示,所关联的车辆信息已被删除了。
图4. 删除车辆信息
查看原图(大图)
场景四
在场景三的基础上修改一下,设想“张三”由于工作不顺,导致最后维护汽车的开支都困难,他不得不退出有车一族的行列清单5:
清单5. 删除所有信息
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){
//级联设置
Db4o.configure().objectClass("bo.People")
.cascadeOnDelete(true);
//打开数据库
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();
//删除车主以及关联的车辆信息
db.delete(people);
}finally{
//关闭连接
db.close();
}
}
}
用过 Hibernate 的开发者都知道,它的级联删除让人留下了深刻印象,第一次使用的时候都会为之振奋。db4o 也为开发者提供了级联删除,和场景二的级联更新一样, cascadeOnDelete() 是专门为删除准备的,基本概念和 cascadeOnUpdate() 一致。打开 ObjectManager 我们会发现数据库已经清空了,张三的购车经历到此结束。
结论
通过本系列文章,db4o 的优势已经体现得淋漓尽致,它的添加、更新、删除是如此的简单,正如 db4o 的口号那样——“仅需一行代码就能存储复杂结构对象,极大的降低了开发时间和成本,提供高效的性能,无需 DBA 干预”。
- ››面向对象的JS-私有成员变量实现方式
- ››开源平台Meego和Android之间的对弈
- ››开源的Kingthy.Mail邮件组件库
- ››面向对象的JavaScript (一、对象基础,使用函数来...
- ››开源飞信Openfetion最新发布v1.8版
- ››开源重复数据删除技术纵览
- ››面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS
- ››开源的 iPhone 杀手终于到来
- ››开源有优势:Android首超Windows Mobile
- ››对象存储不给高性能计算添堵
- ››面向 Java Web 应用程序的 OpenID,第 2 部分: 为...
- ››开源只不过是个幌子 揭示 Android 的真面目
更多精彩
赞助商链接