java - 如何通过Hibernate创建数据库

标签 java spring hibernate postgresql

在我的 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 不这样做。

你可以这样做

  1. 与您的应用程序一起启动的另一个脚本
  2. maven/ant 目标。
  3. 构建作业

但最好的解决方案是使用不需要外部服务器的内存数据库(例如 H2 或 Java derby)

另请参阅 Simulate CREATE DATABASE IF NOT EXISTS for PostgreSQL?

Postgres database create if not exists

关于java - 如何通过Hibernate创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495990/

相关文章:

Java表单搜索方法不起作用-(无法从数据库成员表中细化Member_ID)

java - 想要在密码上添加 @JsonIgnore 属性以响应 Json

java - 为什么hibernate/ehcache二级缓存在同一个 session 中总是丢失?

java - 哪种埃拉托色尼筛法实现效率更高?

java - 给定一个正则表达式,我如何从模式中知道可以匹配的最大字段数是多少?

java - 404 与 response.sendRedirect

spring - JTA/JTS 如何处理事务超时问题?

hibernate - 如何优化这个 GORM 查询

mysql : why would I require AttributeConverter over enum to map a DB column having enum datatype as enum with a JPA entity?

java - 如何每小时调用一次函数?另外,我怎样才能循环这个?