对约束使用Hibernate自动生成的名称是个好主意吗?
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,则无法猜测与约束相关的表/列 我不知道有什么工具可
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。也许你会对它感兴趣。谢谢我还没有建立自己的博客,但仍在进行维护工作