Berkeley DB 增删改查

1.Berkeley DB是一个嵌入式的数据库,它适合于管理海量的、简单的数据。关键字/数据(key/value)Berkeley DB用来进行数据管理的基础。每个key/value构成了一条记录,而整个数据库实际上就是由许多这样的结构单元构成的,使用其提供的API访问数据库时,只需要提供关键字就能访问到相应的数据。当然也可以在提供Key和部分Data来查询符合条件的相近数据。

 

2. NOSQLbdb不支持SQL语言,它对数据的管理很简单,bdb数据库包含若干条记录,每条记录由关键字和数据(key-value)两部分构成。数据可以是简单的数据类型,也可以是复杂的数据类型.

3.BDB可以分为几个子系统:

· 存储管理子系统 (Storage Subsystem)

· 内存池管理子系统 (Memory Pool Subsystem)

· 事务子系统 (Transaction Subsystem)

· 锁子系统 (Locking Subsystem)

· 日志子系统 (Logging Subsystem)



BerkeleydbDao

package newtest;

/**
 * Berkeley DB interface of DAO
 * */
public interface BerkeleydbDao<T> {

    /**
     * open database
     * */
    public void openConnection(String filePath, String databaseName);

    /**
     * 关闭数据库
     * */
    public void closeConnection();

    /**
     * insert
     * */
    public void save(String name, T t);

    /**
     * delete
     * */
    public void delete(String name);

    /**
     * update
     * */
    public void update(String name, T t);

    /**
     * select
     * */
    public T get(String name);

}

BerkeleydbDaoSortedMapImpl

package newtest;

import java.io.File;

import com.sleepycat.bind.EntryBinding;
import com.sleepycat.bind.serial.SerialBinding;
import com.sleepycat.bind.serial.StoredClassCatalog;
import com.sleepycat.collections.StoredMap;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;


/**
 * 使用StoredMap实现
 * */
public class BerkeleydbDaoSortedMapImpl<T> implements BerkeleydbDao<T> {

    Environment env = null;
    private Database database = null;
    private StoredMap<String, T> storedMap = null;
    private Class<T> persistentClass = null;

    EntryBinding<String> keyBinding = null;
    SerialBinding<T> valueBinding = null;

    public BerkeleydbDaoSortedMapImpl(Class<T> persistentClass){
        this.persistentClass = persistentClass;
    }

    public void openConnection(String filePath, String databaseName) {
        File file = new File(filePath);
        EnvironmentConfig envConfig = new EnvironmentConfig();
        envConfig.setAllowCreate(true);
        envConfig.setTransactional(true);
        env = new Environment(file, envConfig);
        DatabaseConfig databaseConfig = new DatabaseConfig();
        databaseConfig.setAllowCreate(true);
        databaseConfig.setTransactional(true);
        database = env.openDatabase(null, databaseName, databaseConfig);
        StoredClassCatalog catalog = new StoredClassCatalog(database);
        keyBinding = new SerialBinding<String>(catalog, String.class);
        valueBinding = new SerialBinding<T>(catalog, persistentClass);
        storedMap = new StoredMap<String, T>(database, keyBinding, valueBinding, true);
    }

    public void closeConnection() {
        if(database != null){
            database.close();
            if(env != null){
                env.cleanLog();
                env.close();
            }
        }
    }

    public void delete(String name) {
        storedMap.remove(name);
    }

    public T get(String name) {
        return storedMap.get(name);
    }

    public void save(String name, T t) {
        storedMap.put(name, t);
    }

    public void update(String name, T t) {
        save(name, t);
    }

}

Test





import java.io.File;


import newtest.BerkeleydbDaoSortedMapImpl;


public class Test {
public static void main(String[] args) {
		
		String dbEnv="C:/Users/zhuawa/Desktop/testdb/";
		File f=new File(dbEnv);
		if(!f.exists()){
			f.mkdirs();
		}
		Person p=new Person();
		p.setAge(1);
		p.setName("李四");
		BerkeleydbDaoSortedMapImpl ddb=new BerkeleydbDaoSortedMapImpl(null);
		String a="test----";
		ddb.openConnection(dbEnv, "mydb");	
		ddb.save("key1", a);
		System.out.println(ddb.get("key1"));
		ddb.openConnection(dbEnv, "mydb");
		ddb.save("test2", p);
		Person person = (Person)ddb.get("test");
		System.out.println("Age:"+person.getAge()+"-----name:"+person.getName());
		
	}
}
    结果:
     


test----
Age:1-----name:李四

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值