`
baobeituping
  • 浏览: 1068258 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

DB4o 将一个对象保存到文件中,然后查询读取

阅读更多

首先定义DB40要保存的JAVA对象

package com.boss.bean;

import java.io.Serializable;
import java.util.ArrayList;

/**
 * @author Administrator
 * @since 2010-12-22
 * @category IndexBean类
 */
public class IndexBean implements Serializable {
 private static final long serialVersionUID = 1L;
 private ArrayList<MyField> list = new ArrayList<MyField>();
 private long registerdate = System.nanoTime();
 private boolean isIndex = false;
 private String indexType = "create";

 public ArrayList<MyField> getList() {
  return list;
 }

 public void setList(ArrayList<MyField> list) {
  this.list = list;
 }

 public long getRegisterdate() {
  return registerdate;
 }

 public void setRegisterdate(long registerdate) {
  this.registerdate = registerdate;
 }

 public boolean isIndex() {
  return isIndex;
 }

 public void setIndex(boolean isIndex) {
  this.isIndex = isIndex;
 }

 public String getIndexType() {
  return indexType;
 }

 public void setIndexType(String indexType) {
  this.indexType = indexType;
 }

}

 

DB4O工具类:

package com.boss.tools;

import java.io.IOException;

import com.boss.bean.IndexBean;
import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.defragment.Defragment;
import com.db4o.defragment.DefragmentConfig;
import com.db4o.ext.DatabaseFileLockedException;

/**
 * @author Administrator
 * @since 2010-12-20
 * @category Db4o处理类
 */
public class Db4o {

 private static ObjectContainer container = null;

 private Db4o() {
 }

 static{
  openObjectContainer();
 }
 
 /**
  * @author
  * @since 2010-12-20
  * @category 打开db4o.db文件
  */
 public static ObjectContainer getObjectContainer() {
  return container;
 }

 /**
  * @author
  * @since 2010-12-20
  * @category 打开db4o.db文件
  */
 private static void openObjectContainer() {
  if (container == null) {
   try {
    container = Db4oEmbedded.openFile("E:/db/db4o.db");
    Log.info("开启db4o.db");
   } catch (DatabaseFileLockedException e) {
    Log.error(e.getMessage());
    e.printStackTrace();
   }
  }
 }

 /**
  * @author
  * @since 2010-12-20
  * @category 关闭db4o.db文件
  */
 public static void close() {
  if (container == null) {
   openObjectContainer();
  }
  container.close();
  Log.info("关闭db4o.db");
 }

 /**
  * @author
  * @since 2010-12-20
  * @category 保存对象到db4o.db文件
  */
 public static void store(Object obj) {
  if (container == null) {
   openObjectContainer();
  }
  if(container.ext().isClosed()) {
   container = null;
   openObjectContainer();
  }
  container.store(obj);
  
 }

 /**
  * @author
  * @throws IOException
  * @since 2010-12-20
  * @category 优化db4o.db文件
  */
 public static void optimize() throws IOException {
  DefragmentConfig config = new DefragmentConfig(Configuration.getDb4oPath());
  config.forceBackupDelete(true);
  try {
   Defragment.defrag(config);
  } catch (IOException e) {
   Log.error(e.getMessage());
   throw e;
  }
 }
 
 public static void delete(IndexBean ib) {
  container.delete(ib);
 }
 
 public static void commit(){
  container.commit();
 }
 
 public static void main(String[] args) {
 
}

 

调用测试:

 

 

package com.boss.tools;

import java.util.ArrayList;
import java.util.List;

import com.boss.bean.IndexBean;
import com.boss.bean.MyField;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.db4o.query.Predicate;

public class TestDBBean {

 /**
  * @param args
  */
 public static void main(String[] args) {
  //store();
  query();
 }
 
 public static void store()
 {
  ArrayList<MyField> list = new ArrayList<MyField>();
  
  for(int i=0;i<100;i++)
  {
   MyField field = new MyField();
   field.setIndex(""+i);
   field.setName("cusName"+i);
   field.setStore("store"+i);
   field.setValue("tuping"+i);
   list.add(field);
  }
  IndexBean ib = new IndexBean();
  ib.setList(list);
  Db4o.store(ib);
  Db4o.close();
 }
 public static void query()
 {
  ObjectContainer container = null;
  try {
   container = Db4o.getObjectContainer();

   //下面的代码是对查询的IndexBean条件进行过滤
   ObjectSet<IndexBean> set = container
     .query(new Predicate<IndexBean>() {
      public boolean match(IndexBean ib) {
       if (ib != null && !ib.isIndex()) {
        return true;
       } else {
        return false;
       }
      }
     });

   
   while (set.hasNext()) {

    IndexBean ib = set.next();
    ArrayList<MyField> list = ib.getList();
    for(MyField ml : list)
    {
     System.out.println(ml.getName()+":"+ml.getValue());
    }
   }
     } catch (Exception e) {
   e.printStackTrace();
  } finally {
   Db4o.close();
  }
 }

}

分享到:
评论

相关推荐

    db4o使用指南

    db4o 对象持久化是将 Java 对象保存到数据库中的过程。 db4o 提供了两种运行模式:本地模式和服务器模式。在本地模式下,开发者可以直接在程序里打开 db4o 数据库文件进行操作,而在服务器模式下,客户端可以通过 IP...

    对象数据库db4o对象数据库db4o

    开发者可以轻松地将`Drawing`对象保存到db4o数据库中,然后在需要的时候加载出来继续编辑。 ### 应用场景 db4o适用于那些需要高效、灵活数据管理,且对象模型复杂,不适合传统关系型数据库的场景。比如游戏开发,...

    Db4o的简单操作项目

    2. **对象持久化**: 要保存一个对象,你只需要创建该对象,然后使用`database.store()`方法将其存入数据库。Db4o会自动跟踪对象的所有变化,并在下次调用`store()`时更新它们。 3. **对象检索**: Db4o提供了一种...

    db4o中文指南

    db4o是一个专为Java和.NET开发者设计的开源、轻量级的纯面向对象数据库引擎,提供了一种简单易用的方式来实现对象持久化。这款数据库引擎已被验证具备优秀的性能,根据描述中的基准测试,db4o在与传统持久化方案的...

    db4o-8.0-java

    **db4o(Database for Objects)** 是一个开源的对象数据库管理系统(Object-Relational Mapping,ORM),它允许开发者直接在Java或.NET平台上存储和检索Java对象或.NET对象,无需进行SQL查询或者映射过程。db4o的...

    db4o8.0以及db4o中文指南

    db4o(Database for Objects)是一款开源的对象数据库系统,它允许开发者直接将Java或.NET对象存储到数据库中,无需进行ORM(对象关系映射)。db4o的目标是简化数据管理,提供更接近自然编程的方式,使开发过程更加...

    db4o-8.0.236.16058.zip 对象数据库,内存数据库jar包,两个

    db4o(Database for Objects)是一种开源的对象数据库管理系统(Object-Relational Mapping, ORM),它允许开发者直接将Java对象持久化到数据库中,无需传统的SQL语句。这个数据库系统的核心理念是“存储对象,而非...

    db4o开发指南和各种实例

    db4o(Database for Objects)是一款开源的对象关系数据库管理系统(Object-Relational Mapping, ORM),它允许开发者直接将Java对象存储到数据库中,无需编写SQL语句。db4o的核心理念是“对象即数据”,它提供了...

    DB4O笔记+常用JAR包

    这个简单的示例展示了如何打开一个DB4O数据库,创建一个新的Person对象,将其保存到数据库,然后通过查询API获取并打印出该对象。 总的来说,DB4O作为一个对象数据库,为Java开发者提供了便捷的数据存储和检索方式...

    db4o面向对象数据库教程的入门教程

    了解db4o引擎的工作原理以及如何将对象持久化到数据库中。 - **基本操作**:学习如何使用db4o进行对象的存储、查询、更新和删除等基本操作。这些操作通常涉及到数据库的连接、事务管理以及对象的序列化和反序列化...

    db4o 权威指南

    《db4o 权威指南》是一本深入探讨db4o这一开源面向对象数据库系统的专业书籍,对于Java开发者来说尤其有价值。db4o是Database for Objects的缩写,它允许开发者以自然、直观的方式存储和检索Java对象,无需编写SQL...

    Db4o (net)类库

    总的来说,Db4o是一个强大的对象数据库解决方案,它简化了.NET开发中的数据管理,使得对象模型和数据库模型保持一致,提高了开发效率。对于需要处理复杂对象关系或希望减少对SQL依赖的项目,Db4o是一个值得考虑的...

    db4o .net3.5

    db4o将对象的实例直接保存到数据库中,使得对象的关系和状态得以保留,提供了更接近于面向对象编程的体验。 ### 2. .NET 3.5支持 .NET Framework 3.5是微软开发的一个广泛使用的平台,用于构建各种类型的应用程序...

    DB4o学习笔记 对象的SQL基本操作

    DB4o(Database for Objects)是一款开源的对象数据库系统,它允许开发者直接在内存中以对象的形式存储、查询和检索数据,无需转换为关系型数据库的表格形式。在本笔记中,我们将深入探讨DB4o的对象SQL基本操作,...

    DB4O Java开发应用

    - Installation:在Java项目中使用DB40,通常需要将db4o相关的JAR文件添加到项目的构建路径或依赖管理中。对于Maven项目,可以通过在pom.xml文件中添加对应的依赖来实现。 2. 第一步: - 打开一个DB4O库:首先,...

    DB4O_.net

    DB4O(Database for Objects)是一款开源的对象数据库系统,它允许开发者将.NET对象直接存储到数据库中,无需进行ORM(对象关系映射)转换。在.NET环境中,db4o为开发人员提供了简单、高效的数据库解决方案,特别...

    DB4o 数据库实例

    DB4o(Database for Objects)是一款开源的对象数据库系统,它允许开发者直接将对象持久化到数据库中,无需进行额外的映射或者数据访问层(DAL)的开发。这个数据库系统设计的目标是简化对象关系映射(ORM)的过程,...

    DB4O管理工具

    DB4O(Database for Objects)是一款开源的对象数据库管理系统(Object-Relational Mapping,ORM),它允许开发者将Java或.NET对象直接存储到磁盘上,无需转换为传统的表和列的结构。DB4O的设计理念是简化数据存储,...

    DB4O 8.0 Object Manager Enterprise

    通过这份教程,用户可以深入理解DB4O的工作原理,学习如何将对象持久化到数据库中,以及如何利用其强大的查询功能。 在DB4O 8.0中,Object Manager是一个重要的组件,它提供了可视化界面,用于查看和操作数据库中的...

Global site tag (gtag.js) - Google Analytics