2015-12-31 44 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

相关问题