五、BDB JE中对序列化对象的存储

本文详细介绍了如何使用Java序列化技术将对象转换为可持久化的数据,并将其存储到数据库中,包括创建序列化对象、打开或创建数据库、实例化类、绑定数据和类、存储数据等关键步骤。

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

1.首先你需要创建一个可序列化对象

2.打开或创建你的database,你需要两个,一个用来存储你的数据,另外一个用来存储类信息。

3.实例化catalog类,这个时候你可以用com.sleepycat.bind.serial.StoredClassCatalog,来存储

你的类信息。

4.通过com.sleepycat.bind.serial.SerialBinding来绑定数据和类。

5.绑定并存储数据

序列化对象类:

public class BookSer implements Serializable {

 private int bookId;
 private String bookName;
 private String bookAuthor;
 private float bookPrice;
 private int bookPage;
 private String bookDesc;
// get()和set()方法

.......

}

对序列化对象的存储:

public static void main(String[] args) {
  Environment myenv = null;
  Database db = null;
  Cursor cursor=null;
  try {
   EnvironmentConfig envconfig = new EnvironmentConfig();
   envconfig.setAllowCreate(true);
   envconfig.setReadOnly(false);

//要在C盘创建bdb文件
   myenv = new Environment(new File("c://bdb"), envconfig);
   DatabaseConfig dbconfig = new DatabaseConfig();
   dbconfig.setAllowCreate(true);
   dbconfig.setReadOnly(false);
   dbconfig.setSortedDuplicates(false);
   db = myenv.openDatabase(null, "book", dbconfig);
   //用来保存类存储信息
   Database myclassdb=myenv.openDatabase(null, "myclassdb", dbconfig);
   //创建catalog
   StoredClassCatalog classCatalog =new StoredClassCatalog(myclassdb);
   //创建绑定对象
   EntryBinding dataBinging=new SerialBinding(classCatalog,BookSer.class);
   DatabaseEntry thekey=new DatabaseEntry("mydata".getBytes("utf-8"));
   DatabaseEntry thedata=new DatabaseEntry();
   BookSer book=new BookSer();
   book.setBookId(1);
   book.setBookName("php web");
   book.setBookAuthor("三毛");
   book.setBookPrice(new Float(23.00));
   book.setBookPage(687);
   book.setBookDesc("php web php web");
   dataBinging.objectToEntry(book, thedata);
   db.put(null, thekey, thedata);
   OperationStatus status=db.get(null, thekey, thedata, LockMode.DEFAULT);
   if(status==OperationStatus.SUCCESS){
    BookSer b=(BookSer) dataBinging.entryToObject(thedata);
    System.out.println(b.getBookId()+"   "+b.getBookName()+"    "+b.getBookPrice());
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    if (db != null) {
     db.close();
    }
    if (myenv != null) {
     myenv.cleanLog();
     myenv.close();
    }
   } catch (Exception e2) {
   }
  }
 }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值