4.DBD-工具类抽象实现

本文介绍了一个封装的BDB数据库操作工具类,包括增、删、改、查、关闭和同步操作。通过实例演示了如何使用该工具类进行数据的存储和读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.tl.job002.utils;
import java.io.File;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.LockMode;
/**
 * 封装的bdb操作工具类 集成了增、删、改、查、关闭、同步操作等方法
 */
public class BDBOperatorUtil {
   private String dbEnvFilePath;
   private String databaseName;
   // 数据库操作的对象声明
   private Database weiboDatabase = null;
   // 环境变量的声明
   Environment myDbEnvironment = null;
   // bdb操作环境变量和数据库初始化
   public BDBOperatorUtil(String dbEnvFilePath, String databaseName) {
	  this.dbEnvFilePath = dbEnvFilePath;
	  this.databaseName = databaseName;
	  /**
	   * 初始化数据库参数
	   */
	  try {
		// 初始化数据存储根目录文件夹
		File f = new File(dbEnvFilePath);
		if (!f.exists()) {
		   f.mkdirs();
		}
		// 数据库配置变量初始化
		DatabaseConfig dbConfig = new DatabaseConfig();// 打开数据库
		 dbConfig.setAllowCreate(true);
		// 初始化环境配置变量,基于该变量去配置环境变量
		EnvironmentConfig envConfig = new EnvironmentConfig();
		// 当使用的数据库配置变量不存在的时候,就自动创建
		 envConfig.setAllowCreate(true);
		// 正式初始化数据库的环境
		myDbEnvironment = new Environment(f, envConfig);
		// 打开一个数据库,如果不存在,则自动创建
		weiboDatabase = myDbEnvironment.openDatabase(null, databaseName,
			  dbConfig);
	  } catch (Exception e) {
		e.printStackTrace();
	  }
   }
   // 将指定的kv对存放到bdb当中,并可以选择是否实时同步到碰盘中
   public boolean put(String key, String value, boolean isSync) {
	  try {
		// 将key和value都封装到DatabaseEntry中
		DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
		DatabaseEntry theData = new DatabaseEntry(value.getBytes("UTF-8"));
		// 写入数据库
		weiboDatabase.put(null, theKey, theData);
		if (isSync) {
		   // 数据同步到磁盘当中
		   this.sync();
		}
		return true;
	  } catch (Exception e) {
		e.printStackTrace();
	  }
	  return false;
   }
   // 删除bdb中指定的key值
   public boolean delete(String key) {
	  // 执行删除操作
	  try {
		DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
		 weiboDatabase.delete(null, theKey);
		return true;
	  } catch (Exception e) {
		e.printStackTrace();
	  }
	  return false;
   }
   // 读取bdb的key对应的数据
   public String getValue(String key) {
	  try {
		// 将读取数据的key封装到DatabaseEntry中
		DatabaseEntry theKey = new DatabaseEntry(key.getBytes("UTF-8"));
		// 将读取出来的值以二进制形式放到DatabaseEntry中
		DatabaseEntry theData = new DatabaseEntry();
		// 执行读取操作
		weiboDatabase.get(null, theKey, theData, LockMode.DEFAULT);
		if (theData.getData() == null) {
		   return null;
		}
		// 将二进制数据转化成字符串值
		String result = new String(new String(theData.getData(), "utf-8"));
		return result;
	  } catch (Exception e) {
		e.printStackTrace();
	  }
	  return null;
   }
   /**
	* 同步数据到碰盘当中,相当于让数据操作实时持久化
	*/
   public boolean sync() {
	  if (myDbEnvironment != null) {
		try {
		   myDbEnvironment.sync();
		   return true;
		} catch (DatabaseException e) {
		   e.printStackTrace();
		}
	  }
	  return false;
   }
   // 关闭环境变量和数据库
   public boolean close() {
	  try {
		// // 先关闭数据库
		if (weiboDatabase != null) {
		   weiboDatabase.close();
		}
		// // 再关闭BDB系统环境变量
		if (myDbEnvironment != null) {
		   myDbEnvironment.sync();
		   myDbEnvironment.cleanLog(); // 在关闭环境前清理下日志
		   myDbEnvironment.close();
		}
		return true;
	  } catch (Exception e) {
		e.printStackTrace();
	  }
	  return false;
   }
   public static void main(String[] args) {
	  // 数据库所在的存储文件夹
	  String dbEnvFilePath = "bdb2";
	  // 数据库名称
	  String databaseName = "weibo2";
	  String key = "self_key_1";
	  String value = "工具类操作示例";
	 
	  // 初始化
	  BDBOperatorUtil bdbUtil = new BDBOperatorUtil(dbEnvFilePath,
		   databaseName);
	  // 增加数据
//    bdbUtil.put(key, value, false);
//    bdbUtil.sync();
	  System.out.println(bdbUtil.getValue(key));
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值