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

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

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

通常Hibernete为我创建db:

update 

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

  Configuration config = new Configuration(); config.addAnnotatedClass(Class1.class); config.addAnnotatedClass(Class2.class); config.addAnnotatedClass(Class3.class);  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

您是否尝试过create值。

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

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

那就是

 create 

这里和这里有更多的信息
或者可能存在方言问题

您可以通过在数据库连接URL中添加createDatabaseIfNotExist=true参数在运行时创建数据库。

有关更多信息,请查看SO链接 !