如何通过Hibernate创建数据库

时间:2014-05-06 13:24:11

标签: java spring hibernate postgresql

在我的spring项目中,我使用Hibernate将我的实体类导出到以前创建的数据库。但这将要求最终用户知道如何在数据库管理器系统中创建数据库(目前我使用的是Postgresql)。

有没有办法,只给出安装postgresql的机器(以及第一次运行应用程序时提供的用户名和密码),Hibernate在服务器中创建一个新的数据库,如果它没有& #39; t存在吗?

3 个答案:

答案 0 :(得分:2)

如果您的配置如下所示

<hibernate-configuration>

  <session-factory>

    <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    <property name="connection.driver_class">org.postgresql.Driver</property>
    <property name="connection.url">jdbc:postgresql://host:port/database</property>
    <property name="connection.username">username</property>
    <property name="connection.password">password</property>


    <property name="current_session_context_class">thread</property>
    <property name="hibernate.show_sql">false</property>
<property name="hbm2ddl.auto">update</property>
  </session-factory>
</hibernate-configuration>

然后数据库将由Hibernate自动创建。

<强>更新

好的,现在我明白了你的意思。你想用Hibernate启动Postgresql服务器。这是不可能的。 Hibernate没有这样做。

您可以使用

执行此操作
  1. 以您的应用程序开头的另一个脚本
  2. maven / ant目标。
  3. 构建作业
  4. 但最好的解决方案是使用不需要外部服务器的内存数据库(例如H2或Java derby)

    另见 Simulate CREATE DATABASE IF NOT EXISTS for PostgreSQL?

    Postgres database create if not exists

答案 1 :(得分:0)

查看hibernate.hbm2ddl.auto文件的参数hibernate.cfg.xml。我建议你这个链接:Hibernate hbm2ddl.auto, possible values and what they do - any official explanation?

答案 2 :(得分:0)

运行&#34;创建数据库...&#34; (请参阅http://www.postgresql.org/docs/9.0/static/sql-createdatabase.html)作为本机SQL查询...

.createSQLQuery(&#34; ...&#34;)。executeUpdate(); ...

Hibernate将 - 至少据我所知 - 不创建数据库,只创建数据库中的表。

我想你需要通过第二个持久性单元/连接连接到postgresql,因为这种方法具有鸡蛋和蛋的特性。