我正在使用Hibernate和JBoss 5.1的項目。我們需要將我們的實體類映射到遵循特定命名約定的Oracle表。我想避免在註釋中指定每個表和列的名稱。因此,我目前正在考慮實施org.hibernate.cfg.NamingStrategy
的自定義實施。Hibernate NamingStrategy實現保持調用之間的狀態
SQL命名約定要求列的名稱具有與表名的前綴等效的後綴。如果有一個表「T100_RESOURCE」,則ID列必須命名爲「RES_ID_T100」。
爲了在NamingStrategy
中實現這個,實現必須保持狀態,即它正在爲其創建映射的當前類名稱。這將依賴於Hibernate的
- 總是前
propertyToColumnName()
- 調用
classToTableName()
並在下次調用之前調用propertyToColumnName()
到classToTableName()
,以確定所有列名是否安全,這樣做還是有Hibernate會混合什麼的情況?我沒有在這裏通過多線程來解決問題(可以通過將最後一個類名稱保留在ThreadLocal
中來解決),而且在某些情況下,Hibernate也會故意調用它。例如Hibernate詢問A類的三個屬性的映射,然後是B類的一個屬性,然後是A的更多屬性。
skaffman,我同意你說的一切。我們不會使用NamingStrategy方法。感謝您的輸入。 – 2010-03-13 14:01:08