2015-07-11 65 views
19

在Hibernate 4.2/4.3(HHH-7079)中,NamingStrategy已被標記爲不推薦使用。從Hibernate 5開始,現在它將附帶兩個替換(?)接口ImplictNamingStrategyPhysicalNamingStrategyHHH-7078),並最終放棄了對舊的NamingStrategy的支持。這就是爲什麼Spring即將推出的Hibernate5支持已經刪除了配置器namingStrategy()並且支持implicitNamingStrategy()physicalNamingStrategy()。到現在爲止還挺好。如何將Hibernate NamingStrategy遷移到(隱式|物理)NamingStrategy?文檔在哪裏?

雖然在一些文件(在不完全working-5.0-migration-guide.md IE)提到的和(生成)發行說明爲即將到來的休眠5(今天的),我發現沒有具體的例子如何實際使用這些。

也許我錯過了一些東西,但JavaDoc和問題都沒有顯示任何這兩種策略類型的想法的證據。此外,我已經有一個基於NamingStrategy的策略:基於well-known one的自定義OracleNamingStrategy

雖然我對代碼中的適當解決方案感興趣(顯然),但實際問題是獲取有效的遷移文檔和/或重新命名策略的概念性概念。


而且相關:

+4

你已經提到_HHH-7078_還有一個鏈接[HHH-9417(HTTPS://hibernate.atlassian .net/browse/HHH-9417),它描述了他們分裂NamingStrategy的原因。對於遷移,必須修改現有的'OracleNamingStrategy',以便實現'PhysicalNamingStrategy'。這是你的問題嗎? – andih

+0

@andih謝謝。那麼,'PhysicalNamingStrategy'是'NamingStrategy'的「後繼者」嗎? HHH-9417很快解釋了這個話題;是的,這可能會有所幫助。在許多問題上,我仍然不相信2-3行(這沒有文檔)。 – knalli

+0

我不會稱之爲繼任者。這取決於提供不同命名策略的意圖。如果你想控制生成隱式名稱的方式,你必須實現'ImplicitNamingStrategy'。如果您的目的是控制隱式/顯式的ames如何映射到物理數據庫表/列,那麼您必須實施「PhysicalNamingStrategy」。如果您需要更多關於如何以及爲什麼需要搜索開發郵件列表的信息。隨意幫助他們更新文檔 - 這是一個開源項目。歡迎投稿。 – andih

回答

1

在Hibernate的配置文件放在以下鍵值對

hibernate.implicit_naming_strategy = org.hibernate.boot.model .naming.ImplicitNamingStrategyLegacyHbmImpl

hibernate.physical_naming_strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl