Hibernate MySQL 查找未映射的表和列
Posted
技术标签:
【中文标题】Hibernate MySQL 查找未映射的表和列【英文标题】:Hibernate MySQL Find Unmapped Tables and Columns 【发布时间】:2018-05-06 03:02:07 【问题描述】:我使用 Hibernate 的自动生成 DDL 功能来创建我的表和列。
但是,我最终删除了实体中的许多列,但这些列仍保留在数据库中。
是否有一个脚本可以识别那些未映射的列和表,以便我可以手动删除它们?
现在,我手动执行此操作,但随着数据库的增长,它变得越来越有问题。
【问题讨论】:
【参考方案1】:恐怕没有自动化的方法可以做到这一点。
或者,您可以在构建和加载项目之前删除整个表,并让 hibernate 使用您定义的列名重新创建它。
【讨论】:
不是一个选项,因为这是清理生产表。【参考方案2】:推荐的是:
我们应该只在开发环境中使用 hibernate.hbm2ddl.auto 属性,而不是在生产环境中使用
如果 hibernate.hbm2ddl.auto=create-drop,hibernate 将在每次部署时删除并创建一个新数据库, 这意味着我们可以跟踪数据库状态及其一致性。
如果 hibernate.hbm2ddl.auto=update,hibernate 将仅使用模型/实体类中所做的更改来更新数据库, 但它不应该被生产环境/数据库信任。
应将生产环境的hibernate.hbm2ddl.auto 设置为默认值,以便在生产环境中不应从hibernate 反映数据库更改。
【讨论】:
我同意 prod 永远不应该自动生成 ddl。但现实是,我不得不清理数百个未映射的列。 我很惊讶没有人为此编写脚本。因为我还剩下数百个未使用的外键。以上是关于Hibernate MySQL 查找未映射的表和列的主要内容,如果未能解决你的问题,请参考以下文章