一个很不错的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); } }