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