我是hibernate的新手,我需要在飞行中创建数据库表。这意味着我将从UI中获取用户的表格详细信息。假设我们将用户对表属性(列)的数量限制为5左右。
我已经阅读了有关hibernate的各种教程,我发现我们可以创建一个表,但为此我们需要预先创建一个类。但就我而言,一切都将是动态的。
与JDBC相比,我们可以直接拍摄CREATE TABLE查询并将表参数传递给java代码中的查询。
我的Web应用程序使用REST Web服务,Spring 3框架和MySQL作为数据库。
任何教程链接或示例代码都非常有用
由于
答案 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的事情。