如何让Hibernate在启动时创建表?

时间:2013-05-17 22:31:56

标签: hibernate hsqldb

我正在使用Hibernate和HSQLDB,我注意到当应用程序启动时,在HSQLDB中不会创建任何表。直到第一次选择或第一次插入才会在HSQLDB中创建所有表。有没有办法在应用程序启动时创建所有表?

编辑回复Pangea:

我修改了我们的hibernate cfg xml文件,使其包含以下内容:

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

但是在服务器启动时仍然无法创建表。它们仅在第一次插入或选择后创建。您提到将在创建Hibernate会话工厂期间创建表。在执行insert或select之前,我们的代码不会调用Configuration.buildSessionFactory()。有没有办法在此之前创建表格?

2 个答案:

答案 0 :(得分:4)

将以下属性添加到hibernate cfg文件中,以便在创建hibernate会话工厂期间自动创建表。

<prop key="hibernate.hbm2ddl.auto">create</prop>

答案 1 :(得分:3)

这就是hibernate通常的工作原理。它在被调用时启动。您可以创建一个空的构造函数,并在应用程序的开头调用它,或者在web.xml中启动它是您正在使用带有servlet调用的Web应用程序。

如果你不让你的程序知道你希望hibernate在程序启动时开始启动它,那么在它被告知或需要SessionFactory之前它不会创建它。

从我所知道的,你拥有所有正确的语法。只需在程序开头确保您希望之前调用它。

Hibernate.org有一个HibernateUtil.class的创建示例,你可以修改它来添加一个空的构造函数来调用。

希望这有助于在应用程序开始时启动Hibernate。