您的位置:首页 > 编程语言 > Java开发

Berkeley DB Java

2009-12-27 22:12 337 查看
一个很不错的Java嵌入式数据库。下面的代码展示了一下用法。如果只是当个Map来用应该是够了。

package bdb;
import java.io.File;
import java.io.IOException;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.LockMode;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
/**
* 一个简单的Bdb Map
*
* @author Shixiong Zhu
*/
public class Bdb {
private Environment env;
private Database database;
private Transaction txn;
public Bdb(String envDirName, String databaseName) throws IOException {
txn = null;
EnvironmentConfig configuration = new EnvironmentConfig();
configuration.setAllowCreate(true);
File envDir = new File(envDirName);
if (!envDir.exists()) {
if (!envDir.mkdirs()) {
throw new IOException("create directory " + envDirName
+ " fail");
}
} else {
if (envDir.isFile()) {
throw new IOException(envDirName + " must be a directory");
}
}
env = new Environment(envDir, configuration);
DatabaseConfig dbConfig = new DatabaseConfig();
dbConfig.setAllowCreate(true);
database = env.openDatabase(txn, databaseName, dbConfig);
}
public void put(BdbEntry key, BdbEntry value) {
DatabaseEntry keyEntry = new DatabaseEntry(key.getBytes());
DatabaseEntry valueEntry = new DatabaseEntry(value.getBytes());
database.put(txn, keyEntry, valueEntry);
}
public boolean get(BdbEntry key, BdbEntry value) {
DatabaseEntry keyEntry = new DatabaseEntry(key.getBytes());
DatabaseEntry valueEntry = new DatabaseEntry();
OperationStatus status = database.get(txn, keyEntry, valueEntry,
LockMode.DEFAULT);
if (status == OperationStatus.SUCCESS) {
value.setBytes(valueEntry.getData());
return true;
} else {
return false;
}
}
public void close() {
database.close();
env.cleanLog();
env.close();
}
public static interface BdbEntry {
public byte[] getBytes();
public void setBytes(byte[] bytes);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: