开源面向对象数据库 db4o 之旅,第 2 部分: db4o 查询方式
2010-04-01 00:00:00 来源:WEB开发网查看原图(大图)
查询数据库
和 RDBMS 一样,db4o 也有自己的查询语言,分别是 QBE(Query by Example)、NQ(Native Queries)、SODA(Simple Object Database Access),db4o 更推荐使用 NQ 进行查询。NQ 方式提供了非常强大的查询功能,支持原生语言,也就意味着你可以使用 Java 来判断该对象是否符合条件,这是其他数据库查询语言无法比拟的。在某些情况下, db4o 核心会将 NQ 翻译成 SODA 以获得更高的性能。下面详细介绍一下这三种查询语言。
QBE(Query by Example)
QBE 规范可在这里下载。QBE 最初由 IBM 提出,同时业界也有许多和 QBE 兼容的接口,包括著名的 Paradox。有些系统,比如微软的 Access,它的基于表单的查询也是受到了部分 QBE 思想的启发。在 db4o 中,用户可借用 QBE 快速上手,可以很容易适应 db4o 存取数据的方式。
当利用 QBE 为 db4o 提供模板(example)对象时,db4o 将返回所有和非默认值字段匹配的全部对象。内部是通过反射所有的字段和构造查询表达式(所有非默认值字段结合”AND”表达式)来实现。
例如,利用 QBE 查找到车牌号为“川A00000”的车主姓名,这是一个级联查询。清单4:
清单4
package com;
import java.util.List;
import bo.AutoInfo;
import com.db4o.Db4o;
import com.db4o.ObjectContainer;
public class DB4OTest{
public static void main(String[] args){
//打开数据库
ObjectContainer db = Db4o.openFile("auto.yap");
try{
//构造模板对象
AutoInfo ai = new AutoInfo();
ai.setLicensePlate("川A00000");
//查询对象
List<AutoInfo> list = db.get(ai);
for(int x = 0; x < list.size(); x++){
System.out.println("车主姓名:"+list.get(x).getOwnerNo().getName());
}
}finally{
//关闭连接
db.close();
}
}
}
- ››开源平台Meego和Android之间的对弈
- ››开源的Kingthy.Mail邮件组件库
- ››面向对象的JavaScript (一、对象基础,使用函数来...
- ››开源飞信Openfetion最新发布v1.8版
- ››开源重复数据删除技术纵览
- ››面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS
- ››开源的 iPhone 杀手终于到来
- ››开源有优势:Android首超Windows Mobile
- ››对象存储不给高性能计算添堵
- ››面向 Java Web 应用程序的 OpenID,第 2 部分: 为...
- ››开源只不过是个幌子 揭示 Android 的真面目
- ››开源面向对象数据库 db4o 之旅,第 1 部分: 初识 ...
赞助商链接