在我的 spring 项目中,我使用 Hibernate 将实体类导出到之前创建的数据库。但这需要最终用户知道如何在数据库管理系统中创建数据库(目前我使用的是 Postgresql)。
有没有办法,只给定安装 postgresql 的机器(以及第一次运行应用程序时提供的用户名和密码),Hibernate 在服务器中创建一个新数据库(如果没有)不存在吗?
最佳答案
如果您的配置如下所示
<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 不这样做。
你可以这样做
- 与您的应用程序一起启动的另一个脚本
- maven/ant 目标。
- 构建作业
但最好的解决方案是使用不需要外部服务器的内存数据库(例如 H2 或 Java derby)
另请参阅 Simulate CREATE DATABASE IF NOT EXISTS for PostgreSQL?
和
关于java - 如何通过Hibernate创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495990/