gpt4 book ai didi

java - Hibernate 不改变现有的列是一个缺点吗?

转载 作者:行者123 更新时间:2023-11-29 10:08:33 25 4
gpt4 key购买 nike

我有一个连接到 PostgreSQL 数据库的 spring boot 应用程序。 DAO 层是使用 HibernateJPA 实现的,并且启用了 auto-ddl 以便 hibernate 负责创建表

今天我的 friend 突然让我将其中一个列类型 BigInteger 更改为 String,然后我说这是不可能的,因为该列已经充满了数据并且 hibernate 将不允许这样

现在他说这是 hibernate 的缺点,我们还讨论了公司是否会根据生产需求更改列定义?

问题

  1. hibernate 真的有缺点吗?
  2. IT 公司或任何组织是否经常更改生产中的列定义?

最佳答案

你不应该在 production 中使用 auto-ddl .它从未打算用于生产,而是用于开发。您不应该使用它的原因是它可能会创建非最佳 DDL 或只会损坏您的数据。

在数据库中进行更改的首选方法是创建一个文件夹,其中包含所有更改数据库结构并将其存储在版本控制中的 SQL 脚本。通用名称是 migrations。然后你可以在你的数据库上手动运行这些脚本或者使用像flyway这样的工具。 (我的建议)或 liquibase .

那么如何使用auto-ddl呢?例如,您可以为新实体创建一个表,然后采用用于创建它的 DDL,并在应用一些调整(如有必要)后将其存储在迁移中。您还可以使用 hibernate.hbm2ddl.auto 中的validate 来检查您的数据库是否与您的实体匹配。

最后回答你的问题:

  1. 不,这不是 hibernate 的缺点,因为 auto-ddl 从未打算进行数据库迁移。
  2. 公司从不使用 auto-ddl 等实用程序更改其数据库。有人(DBA 或开发人员)准备迁移脚本,然后在发布时手动或通过迁移工具应用它。

关于java - Hibernate 不改变现有的列是一个缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55734694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com