2012-10-29 35 views
0

是否可以通過JPA或Hibernate註釋來指定給定索引應該使用範圍能夠索引的方法(比如btree)?如果是這樣,怎麼樣?如何在休眠註釋中指定範圍索引

+0

不是索引數據庫特定的,所以這不是數據庫特定的功能,哪一個更好地處理各自的一方? – dbrin

+0

不是。關鍵是指定您需要運行使用範圍運算符的快速查詢。即將@Index標記爲範圍。這將取決於特定數據庫如何最好地支持這一點 - 許多人會選擇使用btree。 –

回答

3
  • 雖然JPA可以讓你的主鍵(@Id)和唯一約束(@UniqueConstraint)模式,它不會讓你清晰的模型索引。在JPA標準中,當然沒有在索引範圍或樹中建模/提示的功能等。JPA 2.0 Spec

  • Hibernate支持通過@Index進行索引建模。下面是一個例子:

    @Entity
    @ org.hibernate.annotations.Table(名稱= 「森林」,索引= {@index(名稱= 「IDX」,COLUMNNAMES = { 「姓名」, 「長度」} )})
    公共類森林{...}

    或單個列索引:

    公共類樹木{

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

    }

    它不允許你指定一個「不等指數」,B樹等... Hibernate Annotations 3.5

    IF休眠生成DB模式,那麼它會創建索引。
    但是,在任何應用了合理QA的環境中,數據庫模式通常由DBA獨立創建和維護,而不是通過休眠自動模式生成。這是更好的做法,因爲它允許DBA完全根據需要定義所有物理屬性 - 就像您在Q中要求的物理屬性的類型一樣;-)。然後Hibernate與DBA強大的模式版本一起工作。

  • 索引是否由Hibernate/JPA建模,只需運行一個數據庫腳本,並創建一個索引。 (或者,您可以將文本編輯應用到休眠/ JPA生成的腳本)

  • 對於Oracle DB,缺省索引類型已經是B樹。在MySQL的情況下,默認索引類型是B-Tree,但內存存儲引擎的情況除外,默認情況下是HASH - 但在索引創建腳本中指定B-Tree很簡單。 MySQL 5 - Create Index