db4o-针对对象的数据库-是一个完全的对象数据库;它以使对象在其生命周期中-无论是在数据库内或是在外-都保持着它们的本性这样一种方式操纵对象。不论类的复杂性如何,对象的内容,结构和关系都能够被保存。
更准确地说,db4o是一个数据库引擎,你只要将它的一个jar文件包含到你的数据库应用的类路径中就可以使用它了(至少对于Java是这样的)。所以,db4o运行在与你的应用程序相同的进程空间中,并能被直接地调用;它不需要类似于在ODBC或JDBC中使用的驱动文件。db4o存在针对Java,.NET和Mono的版本;它们在功能上都彼此相等。(事实上,使用.NET创建的db4o数据库也能由Java程序访问;反之亦然。)
db4o是开源的。可执行文件,源代码和文档可从http://www.db4objects.com/中下载。广泛的例子程序,和一个活跃的用户社区一样,也都可以从这个站点中找到。
db4o最引人的特性之一就是它在简易性与强大的功能之间的显著平衡。一方面,它的API是如此地易于掌握和方便使用,即使是初学者也能在相同的时间内创建一个功能完备的数据库对象。另一方面,这些相同的API也提供了更底层的能够深入调用数据库引擎的方法,以允许核心开发者为了得到适当的性能而能深入到该引擎的内部中去调整db4o的工具。
db4o的特性就是最好的证明--这胜过只是讨论--所以我们将通过示例这种方法去证明db4o。然而,我们必须牢记本文通篇只是展示了db4o特性中的一部分罢了。感兴趣的朋友会发现为了知晓该数据库引擎的全部功能而去查阅db4o的文档所花的时间是值得的。
db4o是一款对象数据库,非常的小,使用简单,在最近开发的一个项目中被当做缓存用,感觉还不错。以下是一些简单的入门例子,若想学习更深入的关于db4o的知识,可以到官网上查看文档,文档通俗易懂。
package com.boss.db4;
public class Pilot {
private String name;
private int points;
public Pilot(String name,int points) {
this.name=name;
this.points=points;
}
public int getPoints() {
return points;
}
public void addPoints(int points) {
this.points+=points;
}
public String getName() {
return name;
}
public String toString() {
return name+"/"+points;
}
}
package com.boss.db4;
import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
public class TestDB4 {
public static void main(String[] args) {
//new TestDB4().createDB4();
//new TestDB4().storeDB4();
//new TestDB4().queryByExample();
//new TestDB4().updateDB4();
new TestDB4().deleteDB4();
}
public void createDB4() {
// accessDb4o
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded
.newConfiguration(), "TestDB4");
try {
System.out.println("do something....");
} finally {
db.close();
}
System.out.println("end....");
}
public void storeDB4() {
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "TestDB4");
try {
// storeFirstPilot
Pilot pilot1 = new Pilot("Michael Schumacher", 100);
db.store(pilot1);
System.out.println("Stored " + pilot1);
// storeSecondPilot
Pilot pilot2 = new Pilot("Rubens Barrichello", 99);
db.store(pilot2);
System.out.println("Stored " + pilot2);
} finally {
db.close();
}
}
public void queryByExample() {
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "TestDB4");
try {
// retrieveAllPilotQBE
/*Pilot proto = new Pilot(null, 0);
ObjectSet result = db.queryByExample(proto);
listResult(result); */
// retrievePilotByName
Pilot proto = new Pilot("Michael Schumacher", 0);
ObjectSet result = db.queryByExample(proto);
listResult(result);
// retrievePilotByExactPoints
/*Pilot proto = new Pilot(null, 100);
ObjectSet result = db.queryByExample(proto);
listResult(result);*/
// retrieveAllPilots
/*ObjectSet result = db.queryByExample(Pilot.class);
listResult(result);*/
} finally {
db.close();
}
}
public static void listResult(ObjectSet result) {
System.out.println(result.size());
while(result.hasNext()) {
System.out.println(result.next());
}
}
public void updateDB4() {
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "TestDB4");
try {
// updatePilot
ObjectSet result = db
.queryByExample(new Pilot("Michael Schumacher", 0));
Pilot found = (Pilot) result.next();
found.addPoints(11);
db.store(found);
System.out.println("Added 11 points for " + found);
retrieveAllPilots(db);
} finally {
db.close();
}
}
public void retrieveAllPilots(ObjectContainer db) {
try {
ObjectSet result = db.queryByExample(Pilot.class);
listResult(result);
} finally {
db.close();
}
}
public void deleteDB4() {
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "TestDB4");
try {
// deleteFirstPilotByName
ObjectSet result = db
.queryByExample(new Pilot("Michael Schumacher", 0));
Pilot found = (Pilot) result.next();
db.delete(found);
System.out.println("Deleted " + found);
retrieveAllPilots(db);
// deleteSecondPilotByName
/*ObjectSet result = db
.queryByExample(new Pilot("Rubens Barrichello", 0));
Pilot found = (Pilot) result.next();
db.delete(found);
System.out.println("Deleted " + found);
retrieveAllPilots(db); */
} finally {
db.close();
}
}
}
分享到:
相关推荐
"db4o 使用指南" db4o 是一个开源的面向对象数据库,能够轻松地将 Java 对象持久化到数据库中。本文将详细介绍 db4o 的安装、启动、查询方式、对象持久化、数据库文件结构、主要包结构等知识点。 一、db4o 安装和...
总的来说,《db4o 权威指南》是一本全面覆盖db4o特性和实践的资源,对于想要深入理解和使用db4o的Java开发者来说,是一份宝贵的参考资料。通过阅读这本书,开发者能够掌握面向对象数据库的核心概念,提升开发效率,...
3. **对象查询**:db4o使用一种称为OQL(Object Query Language)的查询语言,它是对SQL的面向对象扩展。OQL允许开发者根据对象的属性和关系进行查询,使得数据检索更加直观和高效。 4. **版本控制**:db4o支持对象...
在“Db4o的简单操作项目”中,我们将探讨如何使用Db4o进行基本的数据操作,包括对象的持久化、查询以及事务管理。 首先,你需要访问db4o的官方网站(http://www.db4o.com)来获取最新的Db4o版本。下载完成后,将jar...
#### 四、db4o使用示例 - **首次接触**:在深入探讨具体的代码示例之前,我们先来熟悉一下db4o的基本概念和组件。了解db4o引擎的工作原理以及如何将对象持久化到数据库中。 - **基本操作**:学习如何使用db4o进行...
`db4o中文指南.docx`文档提供了针对中国开发者的详细教程,包括安装步骤、基本概念解释、配置选项、API使用示例、查询语法和最佳实践等内容。这份指南对于初学者来说是宝贵的资源,能够帮助他们快速理解并应用db4o。...
**全部说明文档** 是学习和使用db4o的关键资源,包括API参考、教程、最佳实践和常见问题解答等。这些文档帮助开发者快速上手,解决在实际项目中遇到的问题。 **对象数据库** 与关系型数据库不同,对象数据库直接...
### db4o-7.12 教程详解 #### 一、db4o简介与安装 db4o是一款开源的对象数据库系统,支持Java、.NET 和 Mono等平台。...随着经验的积累,您将更加熟练地使用db4o来构建高效、可靠的数据库应用程序。
通过NQ,可以方便地实现对对象属性的匹配,如查询所有年龄大于30的人,只需创建一个年龄为30的对象,然后使用db4o的query()方法进行查找。 **三、SDOA(SODA - Simple Object Database Access)** SDOA是db4o提供的...
这个标题暗示我们将讨论的是db4o与.NET Framework 3.5的集成和使用。 ### 1. 对象数据库 对象数据库与关系型数据库的主要区别在于,它存储和查询的是对象而非表格数据。db4o将对象的实例直接保存到数据库中,使得...
在Java中,db4o使用`com.db4o`包提供接口,而在C#中,主要通过`Db4objects.Db4o`命名空间下的类和接口来实现。这些接口包括了打开、关闭数据库,保存、查询对象,以及事务处理等基本功能。 ### 3. 查询机制 db4o的...
DB4O,全称为“Database for Objects”,是一个开源的对象数据库管理系统(ODBMS),它允许开发者直接将Java或.NET对象持久化到磁盘上,而无需使用传统的关系型数据库中的SQL语句。DB4O提供了简单、高效且灵活的数据...
在`DrawTools2005`这个示例程序中,可能展示了如何使用db4o来存储和检索图形工具相关的对象。例如,可能会有一个`Shape`类,包含位置、大小、颜色等属性,以及一个`Drawing`类,包含多个`Shape`对象。开发者可以轻松...
若需使用客户端/服务器版本或可选组件,还需要`db4o-8.0-cs-java5.jar`和`db4o-8.0-optional-java5.jar`。最简便的安装方式是将`db4o-8.0-all-java5.jar`添加到项目的CLASSPATH中。在集成开发环境(如Eclipse)中,...
通过深入学习这些材料,你可以全面理解Db4o的工作原理和使用技巧,从而在实际项目中更有效地利用Db4o进行数据存储和管理。 总的来说,Db4o是一个强大且灵活的对象数据库解决方案,尤其适合那些希望减少对象与数据库...
DB4O(Database for Objects)是一款开源的对象数据库管理系统(Object-Relational Mapping,ORM),它允许开发者将Java或.NET对象直接存储到磁盘上,无需转换为传统的表和列的结构。DB4O的设计理念是简化数据存储,...
这篇文档是DB4O Java开发应用的起步篇,主要介绍了如何开始使用DB4O进行开发。 1. 起步: - 下载后的目录结构:当你下载DB4O后,会包含一系列的JAR文件和相关的文档。这些JAR文件包含了DB4O引擎的所有类库,需要将...
3. **高性能**:官方的基准测试显示,db4o在某些场景下的性能远超使用Hibernate/MySQL的传统方案,且其体积小巧,仅需约400KB的库文件,易于集成。 4. **易嵌入**:由于其小巧的体积和低内存消耗,db4o非常适合...