您的位置:首页 > 其它

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

2011-07-18 12:47 225 查看
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) {
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: