WEB开发网
开发学院软件开发Java 面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS 阅读

面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS

 2010-06-08 00:00:00 来源:WEB开发网   
核心提示: 清单 2. CreateTable 类publicclassCreateTable{publicstaticvoidmain(Stringargs[]){Configurationcfg=newConfiguration().configure("hibernate.cfg.xml&q

清单 2. CreateTable 类

public class CreateTable { 
  public static void main(String args[]){ 
    Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); 
    ReplicationConfigurator.configure(cfg); 
    SessionFactory sessionFactory = cfg.buildSessionFactory(); 
    Session session = sessionFactory.openSession(); 
    ReplicationConfigurator.install(session, cfg); 
    session.createCriteria(People.class); 
    session.close(); 
    sessionFactory.close(); 
  } 
} 

如果不出意外,运行完上面的代码后,相应的数据库表也就被建立好了。如 图 2所示,除了 people 和 autoinfo 表以外,还有三个 dRS 的元数据表。

图 2. Oracle 数据库表
面向对象数据库 db4o 之旅,第 4 部分: 使用 dRS

从 db4o 到 RDBMS 的复制

请看 清单 3中的代码,在”main”方法中,我构造了一个 db4o 配置类,并设置了 UUIDs 和 VersionNumbers 生成策略。这里的 UUID 是为了标识 db4o 中存储的数据,而 VersionNubmers 则是为了 dRS 在同步时维护数据状态,所以必须进行设置。

清单 3. ReplicationExample 类

public class ReplicationExample { 
  public static void main(String args[]){ 
    com.db4o.config.Configuration db4oconf = Db4o.newConfiguration(); 
    db4oconf.generateUUIDs(ConfigScope.GLOBALLY); 
    db4oconf.generateVersionNumbers(ConfigScope.GLOBALLY); 
    createReplication(db4oconf); 
  }  
  private static void createReplication(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); 
    People peo = new People(); 
    peo.setAddress("成都市"); 
    peo.setName("张三"); 
    for(int i=0; i<10; i++){ 
      AutoInfo ai = new AutoInfo(); 
      ai.setLicensePlate("川 A00000"+i); 
      peo.addAutoInfo(ai); 
    } 
    odb.store(peo); 
    odb.commit(); 
    // 找出 A(db4o 数据库 ) 中存在的数据 
    ObjectSet changed = replication.providerA().objectsChangedSinceLastReplication(); 
    // 复制到 Oracle 数据库 
    while (changed.hasNext()){ 
      replication.replicate(changed.next()); 
    } 
    replication.commit(); 
    replication.close(); 
    odb.close(); 
  } 
} 

上一页  1 2 3 4 5 6  下一页

Tags:面向 对象 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接