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

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

 2010-04-01 00:00:00 来源:WEB开发网   
核心提示: 但是 QBE 也有明显的限制:db4o 必须反射模板(example)对象的所有成员;无法执行更进一步的查询表达式(例如 AND、OR、NOT 等等);不能约束 0(整型)、””(空字符串)或者 null(对象),因为这些都被认为是不受约束的,开源面向对象数据库 db4o

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

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

Tags:开源 面向 对象

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