2011-11-29 57 views
10

是否必須在使用註釋和hibernate配置文件之間做出嚴格的選擇,還是可以在同一個項目中同時使用兩種方式?是否可以在Hibernate的同一個項目中同時使用註釋和hbm.xml文件?

我們有一個用Hibernate 3.2.5和POJO配置的.hbm.xml文件完成的大型項目。該項目使用Hibernate SessionManager工廠而不是基於JTA的EntityManager工廠。

這樣配置了100多個POJO,原始開發人員團隊不願意切換到註釋。

與此同時,我們需要擴展項目的更多POJO,我們願意使用Hibernate註釋進行配置,並希望留在Hibernate中(如果可能),而不是切換到JPA。

是否可以同時使用.hbm.xml配置文件組合的一些POJO和其他人的註釋?

+1

鑑於諸如NetBeans等工具的繁瑣以及在很多情況下甚至是Eclipse,我甚至在編碼和配置正確的時候也經常會遇到錯誤。因此,即使很多Java專家都說「不知道,從未嘗試過」,我不會浪費我的時間試錯 - 不知道它是我的錯誤還是IDE,或者僅僅因爲它不能簡單地用Java來完成/休眠。 – Skyhan

回答

7

Manu給出了答案,但是如果您要切換到註釋並且您想將這些hbm.xml轉換爲註釋。請繼續。您可以使用將從現有表中生成註釋的pojo類的工具。即使使用這些工具,您不必更改其他代碼就像以前一樣生成pojos。即不要更改屬性名稱。我曾參與過同樣的項目,並使用了Ant腳本。

13

是的,你可以。Documentation

請注意,您可以混合使用傳統的hbm.xml和註釋方法。資源元素可以是hbm文件,也可以是EJB3 XML部署描述符。

有幾個檢查點,但:

但是,您可以不聲明一個類數次(無論註解或通過的hbm.xml)。您不能在實體層次結構中混合配置策略(hbm vs註釋)。

你可以找到更多的信息here

0

我認爲這篇文章很棒,但實際的代碼示例會更好。我試過ManuPK ref,這就是它的工作原理。
我的實際參考這裏: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/ch01.html#setup-configuration

//typical way to use cfg.xml 
Configuration cfg = new Configuration(); 
SessionFactory f = cfg.configure("hibernate.cfg.xml").buildSessionFactory(); 
Session s = f.openSession(); 
s.persist(new EntityObj()); 

//to use both annotation & cfg.xml mappings, use AnnotationConfiguration instead of Configuration 
AnnotationConfiguration cfg = new AnnotationConfiguration(); 
SessionFactory f = cfg.configure("hibernate.cfg.xml").buildSessionFactory(); 
Session s = f.openSession(); 
s.persist(new EntityObj()); 

AnnotationConfiguration將讀取cfg.xml中像往常一樣來解析這兩個<映射資源= 「your_entity.hbm.xml」/ >和<映射類=「我的。 entity.objclass「/ >

免責聲明:我嘗試使用舊的Hibernate ver 3.2.1,它運行良好。

相關問題