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

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

我已经完成了关于hibernate的各种教程,我发现我们可以创建一个表但是为此我们需要事先安装一个类。 但就我而言,一切都将变得充满活力。

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

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

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

谢谢

我认为您可以使用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) 

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

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