JPAまたはHibernateアノテーションを介して、特定のインデックスが範囲対応のインデックス作成方法(btreeなど)を使用するように指定することは可能ですか?もしそうなら、どのように?
1 に答える
JPAでは主キー(@Id)と一意の制約(@UniqueConstraint)をモデル化できますが、インデックスを明示的にモデル化することはできません。JPA標準には、インデックス範囲やbtreeなどでモデル化/ヒントを与える機能は確かにありません。JPA2.0 仕様
Hibernateは@Indexを介したインデックスモデリングをサポートします。次に例を示します。
@Entity
@ org.hibernate.annotations.Table(name = "Forest"、indexes = {@Index(name = "idx"、columnNames = {"name"、 "length"})})
public class Forest {.. .. }または、単一列インデックスの場合:
パブリッククラスツリー{
@Index(name="story1index") public String getLeaf() { return leaf; }
}
「ranged-index」、btreeなどを指定することはできません... Hibernate Annotations 3.5
hibernateがDBスキーマを生成すると、インデックスが作成されます。
ただし、妥当なQAが適用されている環境では、DBスキーマは通常、休止状態の自動スキーマ生成ではなく、DBAによって個別に作成および保守されます。これは、DBAがすべての物理属性を必要に応じて正確に定義できるため、はるかに優れた方法です。Qで要求する物理属性のタイプと同じです;-)。次に、HibernateはDBAの強力に制御されたバージョンのスキーマと連携します。インデックスがHibernate/JPAによってモデル化されているかどうかに関係なく、DBスクリプトを実行するだけで、インデックスが作成されます。(または、Hibernate / JPAで生成されたスクリプトにテキスト編集を適用できます)
Oracle DBの場合、デフォルトのインデックスタイプはすでにBツリーです。MySQLの場合、デフォルトのインデックスタイプはB-Treeです。ただし、デフォルトがHASHであるメモリ内ストレージエンジンの場合を除きますが、インデックス作成スクリプトでB-Treeを指定するのは簡単です。MySQL5-インデックスの作成