面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS
2010-06-08 00:00:00 来源:WEB开发网在”createReplication” 方法中,通过 HibernateReplication 类的 begin(odb, config) 方法,把 db4o 和 Hibernate 的配置实例联系到一起;接下来向 db4o 中创建一个 People 对象和 10 个 AutoInfo 对象,并提交到 db4o;最后找出哪些是 db4o 中存在而 RDBMS 却没有的数据,把这些数据委托给 dRS,让 dRS 复制到 RDBMS。请注意代码注释中 A (db4o 数据库 ) B (Oracle 数据库 ) 的含义和关系。运行完代码后,可以发现 Oracle 中有了新数据,参看 图 3、4。
图 3. people 表
图 4. autoinfo 表
从 db4o 到 RDBMS 的更新与删除
现在来看看如何进行更新和删除。注意 清单 4中的代码,在 updateOraReplication 方法中,首先通过 QBE 查询把车牌号为”川 A000001”的 AutoInfo 对象查出来,然后改成”川 B000001”提交到 db4o,随后 dRS 发现有条数据被修改,找出来之后更新到 RDBMS;同样,通过 QBE 查询把车牌号为”川 A000002”的 AutoInfo 对象查出来,删除后提交到 db4o,最后使用 ReplicationSession 实例的 replicateDeletions(AutoInfo.class) 方法来通知 dRS 对删除数据进行处理。
清单 4. updateOraReplication 方法
private static void updateOraReplication(com.db4o.config.Configuration db4oconf){
ObjectContainer odb = Db4o.openFile(db4oconf, "auto.yap");
Configuration config = new Configuration().configure("hibernate.cfg.xml");
// 绑定 A(db4o 数据库 ) B(Oracle 数据库 ) 关系
ReplicationSession replication = HibernateReplication.begin(odb, config);
// 更新
AutoInfo ai = new AutoInfo();
ai.setLicensePlate("川 A000001");
List<AutoInfo> list = odb.queryByExample(ai);
if(list.size() == 1){
ai = list.get(0);
ai.setLicensePlate("川 B000001");
odb.store(ai);
}
odb.commit();
// 找出 A(db4o 数据库 ) 中修改过的数据
ObjectSet changed = replication.providerA().objectsChangedSinceLastReplication();
// 更新到 Oracle 数据库
while (changed.hasNext()){
replication.replicate(changed.next());
}
// 删除
ai = new AutoInfo();
ai.setLicensePlate("川 A000002");
list = odb.queryByExample(ai);
if(list.size() == 1){
odb.delete(list.get(0));
}
odb.commit();
replication.replicateDeletions(AutoInfo.class);
replication.commit();
replication.close();
odb.close();
}
- ››数据库对象——存储过程
- ››数据库设计词汇对照表
- ››面向对象的JS-私有成员变量实现方式
- ››数据库大型应用解决方案总结
- ››面向对象的JavaScript (一、对象基础,使用函数来...
- ››面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS
- ››对象存储不给高性能计算添堵
- ››面向 Java Web 应用程序的 OpenID,第 2 部分: 为...
- ››面向 Java 开发人员的 db4o 指南: 简介和概览
- ››面向 Java 开发人员的 db4o 指南: 查询,更新和一...
- ››面向 Java 开发人员的 db4o 指南: db4o 中的数据库...
- ››面向 Java 开发人员的 db4o 指南: 超越简单对象
更多精彩
赞助商链接