一次使用JUnit + JPA 实现数据Migrate的实例介绍
项目状况与数据迁移背景
项目本身是基于 Spring Boot+JPA+Hibernate 的项目,项目具体框架如下:
- 使用Maven管理项目
- 使用JPA注解配置实体类
- 数据库是Oracle
因为以上项目有对旧系统部分功能模块的迁移, 新模块的表在新项目中已经建立出来了,实体类有部分的改变。 现在要把旧的数据表的资料迁移到新的表中,Migrate 数据有如下差异:
- 原表的字段和新表的字段命名不同
- 相近类型的字段的类型不同
- 原表的一条数据可能会对应到新表多个数据
- 部分的字段不是直接对应, 需要一些逻辑判断和运算之后才能写入新表中。
方案探求与分析
针对此需求,Migrate 的方式大概有以下五种:
- 纯SQL层面的迁移
- 在项目中编写迁移代码
- 创建单独的项目用于迁移数据
在项目中使用Spring Boot 的单元测试
5.在项目中使用 JPA+ JUnit (不使用Spring Boot)- 使用最底层的SQL 插入的话, 有逻辑判断在里面, 有一些栏位是需要重新计算并设值,迁移较为麻烦, 另外, 旧表的数据量打, 单纯使用SQL,工作量太大, 而且容易出错。
- 在项目中编写迁移代码, 这个迁移在模块上线后就没有用处了, 所以这些代码就属于废代码了。
- 创建单独的项目用于迁移数据 ,因为迁移数据时,需要使用到原项目的一些实体类和公用类。如果从项目中完全复制过来,是可以暂时解决, 但
还没有评论,来说两句吧...