WEB开发网
开发学院软件开发Java 开源面向对象数据库 db4o 之旅,第 2 部分: db4o ... 阅读

开源面向对象数据库 db4o 之旅,第 2 部分: db4o 查询方式

 2010-04-01 00:00:00 来源:WEB开发网   
核心提示: 查看原图(大图)查询数据库和 RDBMS 一样,db4o 也有自己的查询语言,开源面向对象数据库 db4o 之旅,第 2 部分: db4o 查询方式(6),分别是 QBE(Query by Example)、NQ(Native Queries)、SODA(Simple Object Databa

查看原图(大图)

查询数据库

和 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(); 
 } 
 } 
} 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:开源 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接