2015-12-31 43 views
0

我正在創建一個應用程序,我正在從Jersey RESTServices接收JSON格式的數據。我需要使用JSON數據動態生成表,並且還想存儲值在這張桌子裏。讓我們假設我得到的數據是:如何使用Hibernate動態創建JSON數據表

 { "fieldLists": 
        {"fields":[ 

           {"name":"field_a","type":"any Java Type"}, 

           {"name":"field_b","type":"any Java Type"} 
           ] 
        } 
     } 

現在我需要用這個data.I創建表我堅持瞭如何創建類和它在運行時映射?

請提出哪種方法會更好?

+0

爲什麼你要在每次獲得JSON響應時創建* new * table *?爲什麼不把JSON值存儲在預定義表的'json'列中? –

+0

@a_horse_with_no_name事實上,對錶創建和存儲數據的JSON響應將被動態管理。該表將根據表創建請求創建,並且其結構不是預定義的。 –

+0

這不是關係數據庫的工作方式。您不只是爲每個請求創建一個新表。爲什麼你不能只存儲JSON對象? –

回答

1

的ORM框架是真的不主要是因爲他們從來沒有設計,支持動態域名型號供您需求的理想選擇。雖然您可以使用您選擇的ORM框架的原生sql功能,但它實際上只是JDBC的一個包裝。

使用JDBC時,只需在創建表時創建基於JSON提供數據的 DDL語句,然後在需要添加,修改或刪除行時構建適當的語句。

+0

謝謝。但在這種情況下,數據插入的方法是什麼? –

+1

@anandmishra正如我在我的回答中指出的那樣,您將基於您爲新行收到的列數據構造適當的INSERT語句並通過本機SQL執行它。 – Naros

+0

感謝您的幫助.. –

0

首先你需要創建類。 將它保存到某個位置。編譯並加載到內存。 將類添加到休眠配置。

programmatically-compile-and-instantiate-a-java-class

create database in Hibernate at runtime

+0

謝謝。但是我不想在運行時創建數據庫,只要接收到新的表結構就需要添加新表,並將數據存儲在相應的表中。 –

+0

我誤解了問題。我雖然想用一些詭異的方式實現你的目標;)納羅斯的回答當然是做你想做的最好的方式。 – HuTa

相關問題