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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值