3

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

编辑回复 Pangea:

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

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

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

4

2 回答 2

4

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

<prop key="hibernate.hbm2ddl.auto">create</prop>
于 2013-05-17T22:34:53.293 回答
3

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

如果您不让您的程序知道您希望在程序开始时启动休眠,那么它不会创建它,直到它被告知或被 SessionFactory 需要。

据我所知,您拥有所有正确的语法。只需确保您希望在程序开始时更早调用它的 else 即可。

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

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

于 2013-05-18T17:46:31.547 回答