开源面向对象数据库 db4o 之旅,第 2 部分: db4o 查询方式
2010-04-01 00:00:00 来源:WEB开发网但是 QBE 也有明显的限制:db4o 必须反射模板(example)对象的所有成员;无法执行更进一步的查询表达式(例如 AND、OR、NOT 等等);不能约束 0(整型)、””(空字符串)或者 null(对象),因为这些都被认为是不受约束的。要绕过这些限制,db4o 提供了 NQ(Native Queries)。
SODA(Simple Object Database Access)
SODA ,简单对象数据库访问,请查看官方站点,其中一位主要维护者是 Carl Rosenberger,Carl 正是 db4o 首席架构师。
SODA 就是一种与数据库通讯的对象 API。最终的目标是实现类型安全、对象复用、最小的字符串使用、与编程语言无关等特性。SODA 是 db4o 最底层的查询 API,目前 SODA 中使用字符串来定义字段,这样将不能实现类型安全也无法在编译时检查代码,而且写起来较麻烦,当然要达到设计目标这个阶段是必须的。大部分情况下 NQ(Native Queries)是很好的查询接口,不过遇到动态生成查询的时候 SODA 就大有作为了。
通过 SODA 查找到车牌号为“川A00000”的车主姓名。清单5:
清单5
package com;
import java.util.List;
import bo.AutoInfo;
import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.query.Query;
public class DB4OTest{
public static void main(String[] args){
//打开数据库
ObjectContainer db = Db4o.openFile("auto.yap");
try{
//构造查询对象
Query query=db.query();
//设置被约束实例
query.constrain(AutoInfo.class);
//设置被约束实例的字段和约束条件
query.descend("_licensePlate").constrain("川A00000");
//查询对象
List<AutoInfo> list = query.execute();
for(int x = 0; x < list.size(); x++){
System.out.println("车主姓名:"+list.get(x).getOwnerNo().getName());
}
}finally{
//关闭连接
db.close();
}
}
}
- ››面向对象的JS-私有成员变量实现方式
- ››开源平台Meego和Android之间的对弈
- ››开源的Kingthy.Mail邮件组件库
- ››面向对象的JavaScript (一、对象基础,使用函数来...
- ››开源飞信Openfetion最新发布v1.8版
- ››开源重复数据删除技术纵览
- ››面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS
- ››开源的 iPhone 杀手终于到来
- ››开源有优势:Android首超Windows Mobile
- ››对象存储不给高性能计算添堵
- ››面向 Java Web 应用程序的 OpenID,第 2 部分: 为...
- ››开源只不过是个幌子 揭示 Android 的真面目
更多精彩
赞助商链接