2009-10-22 157 views
2

其實我正在尋找類似這樣的東西:休眠狀態下的動態映射?

你在db中修改表(例如添加一列);它應該反映在前端沒有硬編碼的映射文件...

感謝您的幫助。

+0

什麼意思是「增加一列」?你的意思是:添加一列? – 2009-10-22 12:01:09

+0

那麼,你正在尋找一個代碼或一些圖書館? – 2009-10-22 12:28:12

+0

通過「增加」我的意思是添加新的列 – sayan 2009-10-22 12:34:54

回答

2

hibernate是一個ORM。所以在前端和數據庫之間有一個對象模型。這個對象模型應該如何表示動態變化?列通常映射到屬性。如果您在數據庫中添加一個,則仍會錯過類模型中的屬性。

如果要使用字典解決對象模型中的問題,可以選擇直接將字典映射爲映射,但數據不在列中,而是在行中。

或者您將字典映射爲動態組件,它將映射到列。這可能是你正在尋找的。

我想說的是:你應該首先解決對象模型中的問題。然後你可以問這是如何映射的。如果你沒有對象模型,你根本就不需要休眠。

0

當Hibernate啓動時,它將域對象中的所有列映射到表中的列,並由SessionFactory維護。你想要做的就是映射「實時」,這是不支持的,你將不得不爲此創建自己的混合JPA/Hibernate安裝。像@Stephan建議我先從對象模型開始,然後對域對象進行更改(添加屬性),然後將它傳播到你的數據庫。

這意味着您當前的所有查詢都必須動態地考慮這些新屬性 - 如果您擁有的是from DomainObject查詢,那麼這不是問題。

我的觀點是,承擔你想要的事情會造成直接和非正交的問題,在我看來這可能不值得。考慮一些其他策略。

0

可以根據數據庫模式生成休眠配置和域類。也許這是你在找什麼?當然,每次數據庫模式更改時,您都必須編譯您的應用程序。

也許你可以考慮其他的映射工具,如iBatis,你可以在其中定義查詢等配置。