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

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

 2010-04-01 00:00:00 来源:WEB开发网   
核心提示: 通过 API,发现 Query 实例增加了 sortBy 按字段排序方法和 orderAscending正序、orderDescending 倒序排列方法,开源面向对象数据库 db4o 之旅,第 2 部分: db4o 查询方式(8),SODA 比 QBE 更进了一步,NQ(Native Quer

通过 API,发现 Query 实例增加了 sortBy 按字段排序方法和 orderAscending正序、orderDescending 倒序排列方法,SODA 比 QBE 更进了一步。

NQ(Native Queries)

精彩总是在最后出场,NQ 才是 db4o 查询方式中最精彩的地方!有没有想过用你熟悉的的编程语言进行数据库查询呢?要是这样,你的查询代码将是 100% 的类型安全、100% 的编译时检查以及 100% 的可重构,很奇妙吧?NQ 可以做到这些。

有两篇论文专门讲解了 NQ 的基本概念和设计思路,分别是 《Cook/Rosenberger,持久对象原生数据库查询语言》 和 《Cook/Rai,Safe Query Objects: Statically Typed Objects as Remotely Executable Queries》。作为结果集的一部分,NQ 表达式必须返回 true 值来标记特定实例。如果可能的话 db4o 将尝试优化 NQ 表达式,并依赖索引来运行表达式。

通过 NQ 查找到车牌号为“川A00000”的车主姓名。清单6:

清单6

package com; 
 
import java.util.List; 
 
import bo.AutoInfo; 
 
import com.db4o.Db4o; 
import com.db4o.ObjectContainer; 
import com.db4o.query.Predicate; 
 
public class DB4OTest{ 
 
 public static void main(String[] args){ 
 //打开数据库 
 ObjectContainer db = Db4o.openFile("auto.yap"); 
 try{ 
  List <AutoInfo> list = db.query(new Predicate<AutoInfo>() { 
  public boolean match(AutoInfo ai) { 
    //这样才是类型安全的 
      return ai.getLicensePlate().equals("川A00000"); 
    } 
  }); 
   for(int x = 0; x < list.size(); x++){ 
    System.out.println(list.get(x).getOwnerNo().getName()); 
  } 
 }finally{ 
  //关闭连接 
  db.close(); 
 } 
 } 
} 

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

Tags:开源 面向 对象

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