Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在hibernate注释中指定范围索引_Java_Hibernate_Indexing_Hibernate Annotations - Fatal编程技术网

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

Java 如何在hibernate注释中指定范围索引,java,hibernate,indexing,hibernate-annotations,Java,Hibernate,Indexing,Hibernate Annotations,是否可以通过JPA或Hibernate注释指定给定索引应该使用范围索引方法(如btree)?如果是,怎么做? 虽然JPA允许您对主键(@Id)和唯一约束(@UniqueConstraint)建模,但它不允许您显式地对索引建模。JPA标准中当然没有对索引范围或btrees等进行建模/提示的功能 Hibernate通过@index支持索引建模。下面是一个例子: @实体 @org.hibernate.annotations.Table(name=“Forest”,Index={@Index(name=

是否可以通过JPA或Hibernate注释指定给定索引应该使用范围索引方法(如btree)?如果是,怎么做?

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

  • Hibernate通过@index支持索引建模。下面是一个例子:

    @实体
    @org.hibernate.annotations.Table(name=“Forest”,Index={@Index(name=“idx”,columnNames={“name”,“length”})
    公共类林{…}

    或对于单列索引:

    公共级树{

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

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

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

  • 无论索引是否由Hibernate/JPA建模,只要运行一个DB脚本,就可以创建一个索引。(也可以对Hibernate/JPA生成的脚本应用文本编辑)

  • 对于Oracle DB,默认索引类型已经是B树。在MySQL的情况下,默认索引类型是B-Tree,但内存存储引擎的情况除外,在内存存储引擎中,默认索引类型是HASH,但在索引创建脚本中指定B-Tree并不重要

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

      • Hibernate通过@index支持索引建模。下面是一个例子:

        @实体
        @org.hibernate.annotations.Table(name=“Forest”,Index={@Index(name=“idx”,columnNames={“name”,“length”})
        公共类林{…}

        或对于单列索引:

        公共级树{

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

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

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

      • 无论索引是否由Hibernate/JPA建模,只要运行一个DB脚本,就可以创建一个索引。(也可以对Hibernate/JPA生成的脚本应用文本编辑)

      • 对于Oracle DB,默认索引类型已经是B树。在MySQL的情况下,默认索引类型是B-Tree,但内存存储引擎的情况除外,在内存存储引擎中,默认索引类型是HASH,但在索引创建脚本中指定B-Tree并不重要


      索引不是特定于数据库的,因此这不是更好地在各自方面处理的特定于数据库的功能吗?不是。重点是指定您需要运行使用范围运算符的快速查询。即,将@索引标记为范围。如何最好地支持这一点取决于特定的数据库-许多人会选择使用btree。索引不是特定于数据库的,因此这不是数据库特定的功能,可以在各自的方面更好地处理吗?不。重点是指定您需要运行使用范围运算符的快速查询。即,将@索引标记为范围。如何最好地支持这一点取决于具体的数据库——许多人会选择使用btree。