package lastkilometer.BerkeleyDB; import java.io.File; import java.io.FileNotFoundException; import com.sleepycat.bind.serial.StoredClassCatalog; import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseConfig; import com.sleepycat.je.DatabaseException; import com.sleepycat.je.Environment; import com.sleepycat.je.EnvironmentConfig; /** * 抽象类,打开和关闭数据库 * * */ public abstract class AbstractDBD { private Environment env; private static final String CLASS_CATALOG = "java_class_catalog"; protected StoredClassCatalog javaCatalog; protected Database catalogdatabase; protected Database database; public AbstractDBD(String homeDirectory) throws DatabaseException,FileNotFoundException { //判断文件夹是否存在,不存在则创建 File file =new File(homeDirectory); //如果文件夹不存在则创建 if (!file .exists() && !file .isDirectory()){ file .mkdir(); } // 打开env System.out.println("Opening environment in: " + homeDirectory); EnvironmentConfig envConfig = new EnvironmentConfig(); envConfig.setTransactional(true); envConfig.setAllowCreate(true); env = new Environment(new File(homeDirectory), envConfig); // 设置DatabaseConfig DatabaseConfig dbConfig = new DatabaseConfig(); dbConfig.setTransactional(true); dbConfig.setAllowCreate(true); // 打开 catalogdatabase = env.openDatabase(null, CLASS_CATALOG, dbConfig); javaCatalog = new StoredClassCatalog(catalogdatabase); // 设置DatabaseConfig DatabaseConfig dbConfig0 = new DatabaseConfig(); dbConfig0.setTransactional(true); dbConfig0.setAllowCreate(true); // 打开 database = env.openDatabase(null, "URL", dbConfig); } // 关闭数据库,关闭环境 public void close() throws DatabaseException { database.close(); javaCatalog.close(); env.close(); } // put方法 protected abstract void put(Object key, Object value); // get方法 protected abstract Object get(Object key); // delete方法 protected abstract Object delete(Object key); }