如何正确/最安全地更改数据库和 JPA 映射中的列类型?

问题描述 投票:0回答:1

我有以下休眠字段:

@Column(name = MY_COLUMN)
public Long myColumn;

DB2 数据库中的

MY_COLUMN
列当前定义如下:

ALTER TABLE MY_TABLE
  ADD MY_COLUMN BIGINT;

事实证明,这个

MY_COLUMN
字段应该被定义为
DECIMAL(4,1)
,所以我必须在数据库和 JPA 字段映射中相应地更新该列。

正确/最安全的方法是什么?

  1. 先更新数据库,然后更新JPA映射
  2. 首先更新 JPA 映射,然后更新 DB

请注意:我可以立即更新 JPA 映射的代码,但要更改 DB 列,我需要让其他人审查和执行 DDL,从而引入一些滞后时间。

我想知道的事情:

  • 如果先更新JPA,代码会被破坏直到数据库列被更改吗?

  • 我是否应该等到数据库列更新后再将 JPA 映射的更改推送到远程存储库?

  • 在两者都改变之前,是否一定会在一段时间内被破坏?

  • 这取决于涉及的数据类型吗?


预先感谢您的任何见解。

java jpa db2
1个回答
0
投票

您使用 Flyway 或其他数据库迁移工具吗?

在我看来,正确的方法是使用 SQL 更改数据库,然后更改 JPA 实体。

如果您使用例如Flyway,您可以将这两个步骤结合起来,并在应用程序下次启动时自动执行。这样就不会破坏任何东西。

如果您不使用数据库迁移工具,则需要准备SQL语句,仅为用户下架应用程序,用新实体发布新代码并执行SQL。 但我不推荐这样做。如果这样做,请创建备份。

© www.soinside.com 2019 - 2024. All rights reserved.