background image

Java 类,实现对数据的整理和拆分,将源数据库中的数据迁至目标数据库中。 
  (

3)客户端层。客户端层指的是目标数据库端,用来实现返回迁移结果和出错信息,

接收数据迁移完成信号,发送数据迁移指令等。

 

  (

4)源数据库。源数据库指的是旧内容管理系统原有数据库,源数据库大多为基于一

种平台的几个不同版本的系统,其异构性通过

Hibernate 来进行消除。 

  (

5)数据迁移准备。数据迁移准备涉及到的工作包括旧系统数据质量分析、旧系统数据

字典整理、新旧系统数据差异性分析、新系统数据字典整理等。

 

  

2.数据迁移的流程 

  针对网站数据迁移的特性和网站内容管理系统本身的特点,本文通过

Hibernate 消除数

据异构性。下图所示为数据迁移的流程。

 

  结合上图,下面简要阐述数据迁移的基本过程:

 

  (

1)查询新网站内容管理系统是否包含需要迁移的历史数据。 

  (

2)如果没有查询到该历史数据,就向中间层传输一个数据迁移指令,如果查询到历

史数据,就继续完成迁移任务。
  (

3)在 Hibernate 的协助下,中间处理层通过连接源数据库,在对象模型中加载数据

模型中的数据。

 

  (

4)中间处理层转换对象模型中的对象,包括数据分拆、数据重组等。 

  (

5)对转换后的对象进行组装,使之成为新系统对应的 Hibernate 模型,通借助

Hibernate 内部机制写入到目的数据库中。 
  (

6)迁移结果由中间处理层显示,同时将完成信号发送给新内容管理系统,继续回到

步骤

(1)。 

  (四)数据迁移总体模型的关键技术

 

  本系统重点和难点在于实现不同对象模型之间的分拆重组。

 

  

1.通过 Hibernate 对源数据库进行抽取 

  下图所示为数据抽取过程,通过反向工程生产的类,以及已经配置好的源数据库
Hibernate 映射,在系统中加载静态数据。 
  图:

Hibernate 抽取数据 

  通过将源数据库中的数据抽取出来,使之转换为

Java 对象,关键代码如下: 

  

public static void copyBody(String[]args){ 

  

//加载编号为 5 的文章 

  

WyArticles article=new WyArticles(5); 

  

…… 

  

  通过以上代码,将一个

id 号为 5 的文章加载到系统中,从而进一步拆分验证该数据对

象。

 

  

2.拆分验证静态数据对象 

  一般来讲,网站新旧内容管理系统数据库

E-R 图是有所差异的,在组织格式上,通过

Hibernate 抽取的 Java 类也有不少差别,因此对 Java 对象进行相应的转换是十分必要的。基
本的转换主要包括:

 

  (

1)验证空值:如果系统在是否允许保存空值上存在矛盾,就需要通过一定的空值验

证的手段,将默认值存储到新系统中。

 

  (

2)验证数据长度:数据库都有数据库长度的要求,进入新系统的数据长度必须通过

验证,以符合系统要求。

 

  (

3)转换数据格式:可以通过 Java 内部的一些方式来构造出符合目标数据库的 Java