对约束使用Hibernate自动生成的名称是个好主意吗?

对约束使用Hibernate自动生成的名称是个好主意吗?,hibernate,coding-style,liquibase,Hibernate,Coding Style,Liquibase,Hibernate在自动生成的约束名称中包含哈希,并且没有任何人类可读的部分 例如,我运行mvn hibernate4:export: alter table users add constraint FK_iy6c08j4gj1opcg1f3m0iwnv0 foreign key (shop_id) references shop (id); 如果您只知道FK_iy6c08j4gj1opcg1f3m0iwnv0,则无法猜测与约束相关的表/列 我不知道有什么工具可

Hibernate在自动生成的约束名称中包含哈希,并且没有任何人类可读的部分

例如,我运行
mvn hibernate4:export

alter table users 
    add constraint FK_iy6c08j4gj1opcg1f3m0iwnv0 
    foreign key (shop_id) 
    references shop (id);
如果您只知道FK_iy6c08j4gj1opcg1f3m0iwnv0,则无法猜测与约束相关的表/列

我不知道有什么工具可以通过给定的约束名称找到相应的列。我总是使用自定义的供应商特定的
信息性
模式查询进行挖掘

我是否需要使用
@ForeignKey
@UniqueConstraint

@JoinColumn(name = "BAR_ID", foreignKey = @ForeignKey(name = FK_BAR_OF_FOO))

@Table(uniqueConstraints = @UniqueConstraint(columnNames = "ID", name = "PERSONS_PK_CONSTRAINT"))

如果我使用LiquiBase或手工制作的更新脚本?我认为DBA在命名方面比Hibernate更聪明。

是的。我使用LiquiBase,我可以告诉你,自动生成的FK名称是相同的,因为做这项工作的不是LiquiBase,而是Hibernate

我在maven中有一个自己的LiquiBase配置,它创建我称之为autologs的临时文件,并包含增量差异(它是通过
mvn resources:resources LiquiBase:diff
获得的自动变更日志)

我从不直接将自动登录复制/粘贴到变更日志,相反,我总是查看它,修复我不喜欢的东西,最后将其包含到变更日志中


我手动执行的这个审查过程检查了几个点,例如FK名称。

我只是在将LiquiBase包括到项目中的阶段。我对DB变更管理的理解与您的实践完全一致。谢谢你对这个问题感兴趣!如果您感兴趣,我会在我的博客中发布一篇文章,描述如何配置和使用LiquiBase。也许你会对它感兴趣。谢谢我还没有建立自己的博客,但仍在进行维护工作