【发布时间】:2018-08-11 18:39:09
【问题描述】:
情况如下:
- Spring 生产应用程序使用带有 varchar 列的表 (MySQL),
- 我需要将列更改为二进制 blob,
- 并加密现有数据(使用 Java,而不是数据库)。
这个过程的两个已知步骤是:
- 我需要更新实体,更改注释(从 varchar 到 blob)
- 我需要运行迁移以更改列格式(使用 SQL 和 Flyway)
- 这一切都将在我停止应用程序、替换应用程序 jar(更改为新版本)并再次运行时完成。
问题:
- 当它仍然是 varchar 时,我需要从列中取出旧数据,使用 Java 对其进行加密,并在迁移后将其再次存储在 blob 列中。 (修改后输入的新数据没有问题,会自动加密,问题出在旧数据上。)
- 我应该使用什么方法来处理这个更新?哪些一般步骤是正确的?
这是一个更普遍的 Spring 问题 - 当您需要更改生产中现有的结构并操作旧数据以适应新格式时,您如何处理这种情况?
例如在 PHP 中,我使用与应用程序集成的终端脚本并在应用程序环境中运行(在 Laravel 中使用“artisan”命令);我可以轻松地创建正确的操作顺序:获取旧数据并记住它,更改数据库结构,操作旧数据,并将数据插入新结构 - 这一切都在一个脚本和一个事务中。我不知道如何在 Spring 中执行此操作。
【问题讨论】:
标签: java spring hibernate spring-data flyway