首先定义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();
}
}
}