Java 如何在hibernate注释中指定范围索引
是否可以通过JPA或Hibernate注释指定给定索引应该使用范围索引方法(如btree)?如果是,怎么做?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允许您对主键(@Id)和唯一约束(@UniqueConstraint)建模,但它不允许您显式地对索引建模。JPA标准中当然没有对索引范围或btrees等进行建模/提示的功能
- Hibernate通过@index支持索引建模。下面是一个例子:
@实体
@org.hibernate.annotations.Table(name=“Forest”,Index={@Index(name=“idx”,columnNames={“name”,“length”})
公共类林{…} 或对于单列索引: 公共级树{
} 它不允许您指定“范围索引”、btree等 如果hibernate生成DB模式,那么它将创建索引。@Index(name="story1index") public String getLeaf() { return leaf; }
然而在任何应用了合理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”})
公共类林{…} 或对于单列索引: 公共级树{
} 它不允许您指定“范围索引”、btree等 如果hibernate生成DB模式,那么它将创建索引。@Index(name="story1index") public String getLeaf() { return leaf; }
然而在任何应用了合理QA的环境中,DB模式通常由DBA单独创建和维护,而不是通过hibernate自动模式生成。这是一种更好的实践,因为它允许DBA完全根据需要定义所有物理属性,就像您在Q;-)中要求的物理属性类型一样。然后Hibernate使用DBA的模式的强控制版本 - 无论索引是否由Hibernate/JPA建模,只要运行一个DB脚本,就可以创建一个索引。(也可以对Hibernate/JPA生成的脚本应用文本编辑)
- 对于Oracle DB,默认索引类型已经是B树。在MySQL的情况下,默认索引类型是B-Tree,但内存存储引擎的情况除外,在内存存储引擎中,默认索引类型是HASH,但在索引创建脚本中指定B-Tree并不重要