gpt4 book ai didi

mysql - 使用 Hibernate 启用或禁用外键索引

转载 作者:行者123 更新时间:2023-11-29 07:18:36 25 4
gpt4 key购买 nike

我有一个简单的数据库模式,其中包含两个表 A 和 B,这两个表已使用 Hibernate 建模为实体。 B 的每一行都有一个外键,唯一标识 A 的一行。

我注意到,如果我使用 Postgres 作为数据库,默认情况下不会为外键创建索引。由于我配置了很多行和一些删除级联,因此我决定将我的 Hibernate 实体配置为使用 JPA @Index 注释。它运行良好,我可以看到索引已创建。

但是,由于某些原因我不得不切换到另一个数据库后端:HSQLDB。考虑了用于创建索引的 JPA 注释,但由于 HSQLDB 默认情况下为所有外键创建一个索引,因此我最终为同一列创建了 2 个索引。

我读到,外键索引的创建是特定于数据库提供商的(例如,Oracle 和 Postgres 不创建索引,但 MySQL 和 HSQLDB 会创建索引)。

我想知道是否有一种方法可以启用/禁用为外键创建索引,无论提供程序是什么?否则看起来我必须应对双重索引。

欢迎任何想法、评论、建议。

最佳答案

我也遇到类似的情况,我们的产品必须支持各种rdbms(firebird,mssql,oracle,db2)。我们只是为所有 RDBMS 上的所有外键创建索引。对于较大的项目,不依赖 hibernates hbm2ddl 功能进行数据库设置也是一个好主意。 Flyway 或 liquibase 等解决方案可以更好地控制您的 ddl(尽管代价是您必须编写和维护额外的代码)。

关于mysql - 使用 Hibernate 启用或禁用外键索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36989913/

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