我正在使用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()。有没有办法在此之前创建表格?
答案 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。