2012-03-12 152 views
1

我是新來的休眠,我需要創建數據庫表飛。這意味着我將從用戶界面獲取表格細節。比方說,我們限制用戶的表格屬性數量(列)爲5左右。如何使用Hibernate動態地在數據庫中創建表?

我已經通過了關於hibernate的各種教程,我發現我們可以創建一個表,但爲此我們事先需要一個類。但在我的情況下,一切都將是動態的。

與JDBC相比,我們可以直接拍攝CREATE TABLE查詢並將表參數傳遞到java代碼中的查詢中。

我的Web應用程序使用REST Web服務,Spring 3框架和MySQL作爲數據庫。

任何教程鏈接或代碼示例將是很有益

感謝

回答

0

這是不是你想要聽到的答案,但我怕休眠不能在運行時創建表。作爲替代方案,您可以實現鍵值表,將其與用戶表關聯並在其中存儲屬性。多數民衆贊成通常完成。

+0

真的!那我該如何完成我的任務? – Dhruv 2012-03-12 01:02:36

+0

@Dhruv:讀完我的答案。 – wintersolutions 2012-03-12 01:07:00

0

看看Apache CouchDB。它看起來很適合你的情況。通過代碼添加新表格,您會遇到麻煩。如果這是生產環境解決方案,我會虛心請求您重新考慮。你不想通過代碼來做DBA的東西。

1

我認爲您可以使用SchemaExport類,它具有方法create()從一組給定的hibernate映射文件生成表模式創建腳本,然後執行這些腳本。

您應該根據用戶輸入的信息務實地創建hibernate映射XML,並將此XML提供給傳遞到SchemaExport對象的Configuration對象。喜歡的東西:

Configuration config = new Configuration(); 
// mappingClass.xml is generated according to the information entered by user 
config.addResource("mappingClass.xml"); 

SchemaExport schemaExport = new SchemaExport(config); 
schemaExport.create(true,true) 
+0

謝謝,有沒有一種方法可以通過休眠上傳.csv或excel文件?通過這個我的意思是表格會在飛行創建 – Dhruv 2012-03-14 17:05:36

+1

我認爲它不能,因爲休眠不瞭解您的.csv或excel文件的格式。您必須將它們轉換爲hibernate可以理解的格式,即hibernate映射XML。 – 2012-03-14 17:11:46

相關問題