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

前言

在 db4o 之旅 系列文章的第一部分:初识 db4o 中,作者介绍了 db4o 的历 史和现状,应用领域,以及和 ORM 等的比较。在这篇文章中,作者将会介绍 db4o 的安装、启动以及三种不同的查询方式:QBE(Query by Example)、SODA (Simple Object Database Access) 以及 NQ(Native Queries),并分别通 过这三种不同的途径实现了两个关联对象的查询。本文还示范了开发中最经常用 到的几个典型功能的 db4o 实现。

下载和安装 db4o

db4o 所有最新的版本都可以直接在官方网站上下载,进入 db4o 的下载页面 ,我们可以看到最新的 for Java 稳定版本是 5.5,包括 JAR、源代码、入门文 档、API 等内容的完整的打包文件只有 6 MB,db4o 还有一个对象数据库管理工 具 ObjectManager,目前版本是 1.8。

接着在 Eclipse 中新建 Java 项目,把 db4o 对象数据库引擎包 db4o-5.5 -java5.jar 导入进项目。由于 db4o 支持多种版本的 JDK,除了 for JDK 5.0 的 db4o-5.5-java5.jar 外,还有 for JDK 1.1、1.2-1.4 的 JAR 包,以适应 多种环境。与 Hibernate、iBATIS SQL Maps 相比,db4o 更加自然,无需过多 地引用第三方支持库。

开启数据库

db4o 怎样进行对象持久化呢?通过浏览目录可以发现,与传统的 RDBMS 一 样,db4o 也有自己的数据库文件, 在 db4o 中数据库文件的后缀名是“*.yap” 。让我们先来了解一下 db4o 对象数据库引擎的主要包结构:

com.db4o

com.db4o 包含了使用 db4o 时最经常用到的功能。两个最重要 的接口是 com.db4o.Db4o 和 com.db4o.ObjectContainer。com.db4o.Db4o 工厂 是运行 db4o 的起点,这个类中的静态方法可以开启数据库文件、启动服务器或 连接一个已经存在的服务器,还可以在开启数据库之前进行 db4o 环境配置。 com.db4o.ObjectContainer 接口很重要,开发过程中 99% 的时间都会用到它, ObjectContainer 可在单用户模式下作为数据库实例,也可作为 db4o 服务器的 客户端。每个 ObjectContainer 实例都有自己的事务。所有的操作都有事务保 证。当打开 ObjectContainer,就已经进入事务了,commit() 或 rollback() 时,下一个事务立即启动。每个 ObjectContainer 实例维护它自己所管理的已 存储和已实例化对象,在需要 ObjectContainer 的时候,它会一直保持开启状 态,一旦关闭,内存中数据库所引用的对象将被丢弃。

com.db4o.ext

你也许想知道为什么在 ObjectContainer 中只能看见很少 的方法,原因如下:db4o 接口提供了两个途径,分别在 com.db4o 和 com.db4o.ext 包中。这样做首先是为了让开发者能快速上手;其次为了让其他 产品能更容易的复制基本的 db4o 接口;开发者从这一点上也能看出 db4o 是相 当轻量级的。每个 com.db4o.ObjectContainer 对象也是 com.db4o.ext.ExtObjectContainer 对象。可以转换成 ExtObjectContainer 获 得更多高级特性。

com.db4o.config

com.db4o.config 包含了所有配置 db4o 所需的类。

com.db4o.query

com.db4o.query 包包含了构造“原生查询, NQ(Native Queries)”所需的 Predicate 类。NQ 是 db4o 最主要的查询接口。

db4o 提供两种运行模式,分别是本地模式和服务器模式。本地模式是指直接 在程序里打开 db4o 数据库文件进行操作:

ObjectContainer db = Db4o.openFile("auto.yap");

而服务器模式则是客户端通过 IP 地址、端口以及授权口令来访问服务器:

服务器端:

ObjectServer server=Db4o.openServer("auto.yap",1212);
server.grantAccess("admin","123456");

客户端:

ObjectContainer db=Db4o.openClient ("192.168.0.10",1212,"admin","123456");

两种方式都可以得到 ObjectContainer 实例,就目前 Java EE 应用环境来 看,服务器模式更有现实意义;而本地模式更适合于嵌入式应用。为了简化演示 ,本文在下面的例子都将采用本地模式。

时间: 2024-09-16 20:31:27

开源面向对象数据库db4o之旅,第2部分 db4o查询方式的相关文章

开源面向对象数据库db4o之旅,第1部分 初识db4o

前言 业界对持久存储领域的追求从未停止过,为了更方便.更容易地用对象表达 我们的思维,开源领域和商业领域都涌现了许多新技术, ORM 的出现恰恰说明 了这点.最近一年,业界也在反思,到底 ORM 给我们带来的是便利还是麻烦. 矛头指向大名鼎鼎的 Hibernate ,纷纷议论其性能问题,大家似乎要达成这样 的共识:"在业务逻辑复杂的地方用 SP ,而一般的 CRUD 还是 Hibernate " ,就连全球知名的 BearingPoint 也有类似看法.下面一个简单的例子,说明了 传统

开源面向对象数据库db4o之旅,第3部分 深入db4o

前言 在开源面向对象数据库 db4o 之旅 系列文章的第 1 部分:初识 db4o 中, 作者介绍了 db4o 的历史和现状,应用领域,以及和 ORM 等的比较: 在第 2 部分:db4o 查询方式中, 作者介绍了 db4o 的三种不同的查询方式:QBE.SODA 以及 Native Queries,并分别通过这三种不同的途径实现了两个关联对象的查 询. 前面我们已经介绍了如何在 db4o 中查询以及添加对象,在本文中我们将会 向您介绍在 db4o 中如何对对象进行更新以及删除操作. 更新数据

面向对象数据库db4o之旅,第4部分 使用dRS

前言 在开源面向对象数据库 db4o 之旅 系列文章的第 1 部分:初识 db4o 中, 作者介绍了 db4o 的历史和现状.应用领域.以及和 ORM 等的比较:在第 2 部 分:db4o 查询方式 中 , 作者介绍了 db4o 的三种不同的查询方式:QBE.SODA 以及 Native Queries,并分别通过这三种不同的途径实现了两个关联对象的查 询:在第 3 部分:深入 db4o 中,作者介绍了 db4o 的修改和删除,引入了" 更新深度 (update depth)"这一重要

Java的面向对象数据库db4o

上学的时候就听老师说过有对象数据库. 但是我所接触的数据库都是关系型数据库mysql,oracle,ms sql server,或是db2. 最近在ibm development work上看到一个名为db4o的对象数据. 才看第一章,学过Java的都应该很容易理解的. 确实它真的很简单. 看起来似乎就像是在一个Java的操作,而并非如我们所以为的那样的想关系型数据库中操作一样. 如果有兴趣的话,大家也可以去看看. 不过,文章作者也对db4o的一些缺点进行了列举. 自己并没有进行很深入的学习.

Java中8个顶级开源NoSQL数据库!

Java中8个顶级开源NoSQL数据库! NoSQL Databases, Java, Terrastore, Neo4j, Voldemort, HBase, InfoGrid, HyperGraphDB, Perst, NeoDatis ODB NoSQL正在崛起.许多企业和用户已经将MySQL数据库替换成了NoSQL数据库.NoSQL使分析非结构化的数据变得更容易,因此开发者必须意识到存在于NoSQL世界中的趋势和工具. 1.Terrastore 新的文档存储技术可以提供先进的伸缩性和弹性

jQuery谷歌地图插件Maplace(图中附送如何攻击开源中国数据库)

jQuery谷歌地图插件Maplace 图中附送如何攻击开源中国数据库..   var P1 = [ { lat: 45.468945, lon: 45.73684365, title: 'Title', html: 'Content', zoom: 10, animation: google.maps.Animation.DROP } ]; var LocsA = [ { lat: 45.9, lon: 10.9, title: 'Title A1', html: '<h3>Content

时间序列数据的存储和计算 - 开源时序数据库解析(一)

开源时序数据库   如图是17年6月在db-engines上时序数据库的排名,我会挑选开源的.分布式的时序数据库做详细的解析.前十的排名中,RRD是一个老牌的单机存储引擎,Graphite底层是Whisper,可以认为是一个优化的更强大的RRD数据库.kdb+.eXtremeDB和Axibase都未开源,不做解析.InfluxDB开源版和Prometheus的底层都是基于levelDB自研的单机的存储引擎,InfluxDB的商业版支持分布式,Prometheus的roadmap上也规划了分布式存

什么是面向列开源分布式数据库Hbase - 产品和技术

什么是面向列开源分布式数据库Hbase 发布时间:2012.04.16 14:41      来源:和讯     作者:和讯 HBase是一个分布式的.面向列的开源数据库,由Apache基金会开发.HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.它基于列的而不是基于行的模式.用户存储数据行在一个表里.一个数据行拥有一个可选择的键和任意数量的列.用户可根据键访问行,以及对于一系列的行进行扫描和过滤.HBase一个可以横向扩张的表存储系统,能够为大规模数据提供速度极快的低等

[转]李战大师-悟透delphi 第十一章 面向对象数据库基础

第十一章  面向对象数据库基础 第二节 数据对象的标识我们在关系数据库的设计和开发中,可能经常需要一些唯一的编号或标识,用来作为关键字,以区别每一个不同的人,每一张不同的单据,每一次不同的信息登记,等等.并且,我们也一直采用这些编号和标识,作为关系的连接字段.但是,要保证编号或标识是完全唯一的,却是一个不大不小的难题.下面我们将详细讨论这一问题,并希望能从另一个高度来理解这一问题.不过,我们首先来看看问题是怎样由来的.现在,给大家讲一个故事. 从前,在北京降生了一个漂亮的小女孩.接生的李阿姨说,