当前位置: 首页 > 知识库问答 >
问题:

如何通过Hibernate创建数据库

齐学文
2023-03-14

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

是否有任何方法,只要给定安装postgreql的机器(以及第一次运行应用程序时提供的用户名和密码),HiberNate在服务器中创建一个新数据库(如果它不存在)?

共有3个答案

王豪
2023-03-14

运行“创建数据库...”(见http://www . Postgresql . org/docs/9.0/static/SQL-create database . html)作为原生SQL查询...

.createSQLQuery(“ ...“).executeUpdate();...

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

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

罗毅
2023-03-14

查看parameter<code>hibernate.hbm2ddl。为您的hibernate.cfg自动。xml文件。我建议您使用这个链接:Hibernate hbm2ddl。汽车、可能的价值观及其作用-有官方解释吗?

刘永望
2023-03-14

如果您的配置如下所示

<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. 一个专家/蚂蚁目标。
  3. 生成作业

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

另请参见为PostgreSQL模拟CREATE DATABASE IF NOT EXISTS?

Postgres数据库创建(如果不存在)

 类似资料:
  • 问题内容: 有没有一种方法可以通过Hibernate 3.2 API获得一些基础数据库版本的信息?我在这里和javadoc中都找不到相关的位。 问题答案: 获取数据库引擎的版本是特定于实现的。这意味着没有获取版本的共享方法,因此Hibernate不能真正提供API,因为它没有绑定到任何特定的RDBMS。例如,以下是通过一些著名的RDBMS使用SELECT语句获取版本的几种不同方法: Oracle

  • 我在anylogic中根据我创建的数据库表生成代理。在这个数据库中,我有我的代理的一些特征。这个代理应该是我的“调度代理”,因为我的重点是重新调度,所以我的生产订单必须保存为队列中的代理。我的问题是,在生成代理时,首先我不能告诉系统一次生成所有代理(比如“导入”数据库的行,并将每一行转换为具有特征的代理)。我试着在每个生产订单之间增加1s的差异,但是,当到达最后一个日期时,我的模拟给出了一个错误并

  • 问题内容: 读完Hibernate之后:hbm2ddl.auto=正在生产中更新吗?出现了一些问题。首先,我使用Hibernate的原因是要与数据库供应商无关(无需编写10个版本的“相同” sql查询,例如tsql vs. sql)。 我的问题是在创建数据库架构(生产环境)时出现的。据我所知,我有两种选择。 hbm2dll =更新 纯sql(ddl)脚本。 在上面的主题中广泛讨论了第一种选择。第二

  • 问题内容: 我正在创建SessionFactory,并在创建SessionFactory的代码中将数据源作为对象,但是无法将数据源设置为Hibernate Configuration对象。那么如何将数据源设置为SessionFactory? 问题答案: 要提供与Session的JDBC连接,您需要实现ConnectionProvider。 默认情况下,Hibernate使用它从JNDI 获取实例。

  • 问题内容: 我正在使用Hibernate租约,并且每次用户登录时,我都将数据库更改为其用户名(SQLite)。可悲的是,有时数据库不存在,我需要创建它。 问题是我不知道如何在运行时在数据库中创建所有表。 通常,Hibernete为此创建数据库: 问题答案: 创建数据库之后,可以为此使用SchemaExport导出要在新创建的数据库中创建的实体。基本步骤如下。如何获取配置的属性并不重要。 Javad

  • 问题内容: 我需要通过运行设置服务器的脚本来添加cron作业。我目前正在使用Ubuntu。我可以使用,但这将打开一个编辑器来编辑当前的crontab。我想以编程方式执行此操作。 有可能这样做吗? 问题答案: Cron作业通常存储在每个用户的文件下 您要做的最简单的事情可能就是创建一个配置了作业的文本文件,然后将其复制到cron spool文件夹中,并确保它具有正确的权限(600)。