如何使用Hibernate动态创建数据库中的表?

时间:2012-03-12 00:38:03

标签: java hibernate

我是hibernate的新手,我需要在飞行中创建数据库表。这意味着我将从UI中获取用户的表格详细信息。假设我们将用户对表属性(列)的数量限制为5左右。

我已经阅读了有关hibernate的各种教程,我发现我们可以创建一个表,但为此我们需要预先创建一个类。但就我而言,一切都将是动态的。

与JDBC相比,我们可以直接拍摄CREATE TABLE查询并将表参数传递给java代码中的查询。

我的Web应用程序使用REST Web服务,Spring 3框架和MySQL作为数据库。

任何教程链接或示例代码都非常有用

由于

3 个答案:

答案 0 :(得分:2)

我认为您可以使用具有方法create()SchemaExport类从一组给定的hibernate映射文件生成表模式创建脚本,然后执行这些脚本。

您应该根据用户输入的信息实际创建hibernate映射XML,并将此XML提供给传递给Configuration对象的SchemaExport对象。有点像这样:

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)  

答案 1 :(得分:0)

这不是你想听到的答案,但我担心hibernate无法在运行时创建表。作为替代方案,您可以实现键值表,将其与用户表关联并在那里存储属性。多数民众赞成就是这样做的。

答案 2 :(得分:0)

看看Apache CouchDB。它看起来很适合你的情况。通过代码添加新表,您会遇到麻烦。如果这对于生产环境解决方案,我会谦虚地请求您重新考虑。你不想通过代码做DBA的事情。