2009-10-30 27 views
2

衆所周知,hibernate以非常奇怪的方式處理索引。只有從頭開始創建數據庫模式時纔會生成它們。但是如果你嘗試更新數據庫模式,hibernate會忽略新的索引。Hibernate用新索引更新數據庫結構

我的問題是,是否有人找到一個解決方案如何在模式更新期間要求hibernate爲新索引生成SQL。我想與Stefan Steinegger不同意。使用Hibernate進行索引管理是一件痛苦的事情。很高興看到該功能計劃用於下一個版本(3.5.x),並且將向後兼容3.3.x和3.2.x。詳細信息是here

+0

你當然可以不同意斯蒂芬,但他絕對是對​​的。 Hibernate架構更新只給你非常基礎的東西。當涉及索引/輔助對象(觸發器/存儲特效/等...),**改變**列,約束等等,它不會有任何幫助。有適當的工具,Hibernate架構更新不是其中之一。 Сокироюцвяхинезабивають:-) – ChssPly76 2009-10-30 16:36:02

+0

Thanx ChssPly76。我很欣賞你的觀點。但我主要使用SchemaUpdate作爲比較現有模式與休眠模式的差異工具。這就是爲什麼我需要查看自上次部署以來發生了哪些變化(例如添加了新索引等)。現在SchemaUpdate對我來說很好,除了一種情況 - 索引。我知道並評估了數據庫重構工具,包括下面提到的LiquiBase。他們中的大多數不能爲我提供我期望的靈活性水平。我期待Liquibase 2.0希望它能滿足我的胃口。 – FoxyBOA 2009-10-31 05:11:07

回答

1

在Hibernate 3.5.0-Beta-2發行版中解決了該問題。細節是herehere

3

架構更新不打算在生產環境中使用。它只能用於開發人員。

另一方面,模式出口建議用於生產。導出模式以獲取實際的模式定義並使用其他方式更新現有數據庫。編寫你自己的更新腳本或使用指定的工具。

+1

+1。對於問題中的「指定工具」,我強烈建議LiquiBase(http://www.liquibase.org/)。它甚至與Hibernate集成,所以導出模式的手動步驟是不必要的。 – ChssPly76 2009-10-30 16:32:23