gpt4 book ai didi

java - 如何在hibernate注释中指定范围索引

转载 作者:行者123 更新时间:2023-12-02 00:09:32 26 4
gpt4 key购买 nike

是否可以通过 JPA 或 Hibernate 注释指定给定索引应使用支持范围的索引方法(例如 btree)?如果是这样,怎么办?

最佳答案

  • 虽然 JPA 允许您对主键 (@Id) 和唯一约束 (@UniqueConstraint) 建模,但它不允许您显式对索引建模。 JPA 标准中当然没有对索引范围或 btree 等进行建模/提示的功能。JPA 2.0 Spec

  • Hibernate 通过 @Index 支持索引建模。这是一个例子:

    @Entity
    @org.hibernate.annotations.Table(name="Forest",indexes = { @Index(name="idx​​",columnNames = { "name", "length"} ) } )
    公共(public)类森林 { ... }

    或者对于单列索引:

    公共(public)类树{

      @Index(name="story1index")
    public String getLeaf() {
    return leaf;
    }

    }

    它不允许您指定“范围索引”、btree 等... Hibernate Annotations 3.5

    如果 hibernate 生成数据库模式,那么它将创建索引。
    但是,在任何应用了合理 QA 的环境中,DB 模式通常由 DBA 单独创建和维护,而不是通过 hibernate 自动模式生成。这是更好的做法,因为它允许 DBA 完全根据需要定义所有物理属性 - 就像您在 Q 中要求的物理属性类型一样;-)。然后,Hibernate 使用 DBA 严格控制的架构版本。

  • 无论索引是否由 Hibernate/JPA 建模,只需运行 DB 脚本,即可创建索引。 (或者您可以将文本编辑应用到 Hibernate/JPA 生成的脚本)

  • 对于 Oracle DB,默认索引类型已经是 B 树。对于 MySQL,默认索引类型是 B-Tree,内存存储引擎除外,默认索引类型是 HASH - 但在索引创建脚本中指定 B-Tree 很简单。 MySQL 5 - Create Index

关于java - 如何在hibernate注释中指定范围索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13127441/

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