如何在运行时在Hibernate中创建数据库?

时间:2013-05-28 21:39:12

标签: java hibernate

我正在使用Hibernate租赁,每次用户登录时我都会将数据库更改为他的用户名(SQLite)。遗憾的是,有时数据库不存在,我需要创建它。

问题是我不知道如何在运行时在数据库中创建所有表。

通常Hibernete会为我创建db:

<property name="hibernate.hbm2ddl.auto">update</property>

3 个答案:

答案 0 :(得分:4)

您是否尝试了值create

  

create的值将在sessionFactory创建时创建表,并保持原样。

     

create-drop的值将创建表,然后在关闭sessionFactory时删除它们。

那将是

<property name="hibernate.hbm2ddl.auto">create</property>

更多信息herehere
或者可能有dialect problem

答案 1 :(得分:3)

您可以在运行时通过在数据库连接URL中添加http://www.example.com:8000/beet.ogg http://www.example.com:8000/mouthorgan.mp3 http://www.example.com:8000/live 参数来创建数据库。

有关详细信息,请查看SO Link

答案 2 :(得分:2)

您可以使用SchemaExport在创建数据库后立即导出要在新创建的数据库中创建的实体。基本步骤如下。如何获得配置的属性并不重要。

    Configuration config = new Configuration();
    config.addAnnotatedClass(Class1.class);
    config.addAnnotatedClass(Class2.class);
    config.addAnnotatedClass(Class3.class);
    <set all hibernate properties/datasource here>
    SchemaExport schema = new SchemaExport(config);
    schema.create(true, true);

Javadocs在这里:http://docs.jboss.org/hibernate/orm/3.3/api/org/hibernate/tool/hbm2ddl/SchemaExport.html

有关设置配置的选项,请参阅此处。 http://docs.jboss.org/hibernate/orm/3.3/api/org/hibernate/cfg/Configuration.html

修改 我想一个必须添加的注释是让hibernate在生产环境中处理DB / SCHEMA / TABLE创建被认为是不好的做法。根据需要和可行性,可能更好的做法是为此保存准备好的SQL语句,甚至可以由数据库管理员手动执行。但由于我们都懒惰,我想这不会经常发生。 ; d