在我的spring项目中,我使用Hibernate将我的实体类导出到以前创建的数据库。但这将要求最终用户知道如何在数据库管理器系统中创建数据库(目前我使用的是Postgresql)。
有没有办法,只给出安装postgresql的机器(以及第一次运行应用程序时提供的用户名和密码),Hibernate在服务器中创建一个新的数据库,如果它没有& #39; t存在吗?
答案 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没有这样做。
您可以使用
执行此操作但最好的解决方案是使用不需要外部服务器的内存数据库(例如H2或Java derby)
另见 Simulate CREATE DATABASE IF NOT EXISTS for PostgreSQL?
和
答案 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,因为这种方法具有鸡蛋和蛋的特性。