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

如何动态创建PostgerSQL数据库时,执行源代码在Java,Hibernate?

吴俊风
2023-03-14

接到了我人生中第一个测试任务的工作,我需要做一个Rest的服务。其中一个要求是:“应用程序应使用 maven 构建,而无需安装或配置任何其他组件;”在此之前,我编写了我的企业应用程序,但我通过 pgAdmin 手动创建了数据库本身,并使用源代码运行了一个 sql 脚本来创建如下表:

如果存在建筑物级联,则删除表;

现在,据我所知,我的应用程序启动了,我的代码必须以某种方式动态创建数据库,或者可能需要其他东西,例如远程数据库。我不确定,因为,同样,我以前从未做过测试任务。请告诉我谁比年轻的同事更有经验)

共有2个答案

丁成弘
2023-03-14

Hibernate希望数据库在运行时检查<code>应用程序时出现。属性/应用。yml</code>文件

> < li>

如果数据库需要由您的应用程序创建,您可能需要检查Flyway。

如果数据库已经存在,但您的应用程序需要处理表的生成,那么您应该对您的实体进行建模,因为 Hibernate 将为您创建它。请参阅下面的示例。

 #application.yml
 datasource:
   url: jdbc:postgresql://localhost:5432/mydb
     username: test
     password: test
   jpa:
     hibernate:
       ddl-auto: create-drop
     properties:
       hibernate:
         dialect: org.hibernate.dialect.PostgreSQLDialect
         format_sql: true
     show-sql: true

然后在你的实体中:

@Entity(name = "Employee")
@Table(name = "employee")
public class Employee {

  @Id
  @Column(name = "id", updatable = false, nullable = false)
  private Long id;

  @Column(name = "first_name", nullable = false, columnDefinition = "TEXT")
  private String firstName;
}

当您运行应用程序时,它应该生成名为employee的数据库表。请注意< code>ddl-auto值。

参考文献:

    < Li > https://docs . spring . io/spring-boot/docs/1 . 1 . 0 . m1/reference/html/how to-database-initial ization . html < Li > https://www . bael dung . com/spring-data-JPA-generate-d b-schema
岳嘉石
2023-03-14

如果要从 Java 执行此操作,请使用 JDBC 连接到 Postgres 服务器上的现有数据库。每个 Postgres 集群都会自动创建一个默认数据库,从而解决了先有鸡还是先有蛋的困境。

在JDBC的SQL语句中,使用具有足够权限的登录名创建数据库。然后为使用CREATEDATABASE命令的SQL命令编写文本。

您还应该注意在Postgres服务器上创建其他用户帐户,这些用户比超级用户有更多的限制。相应地为新创建的数据库分配角色。

您可以看到这个< code>CREATE DATABASE思想在这个问题上的应用,Postgresql - Create Database

此外,我建议您考虑使用模式迁移工具,例如Flyway或Liquibase。但是,我记得使用这两种工具都必须首先创建数据库。然后,这些工具可以完成其余的工作,创建表和列、索引、约束等。

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

  • 问题内容: 是否可以从结构动态创建mysql数据库。 好像卡在了密码提示符下 问题答案: 试试吧

  • 问题内容: 我有定期被推送到数据库中的Java代码(很难解释为什么它存在于数据库中,而这只会使焦点从主要问题上移开)。 在运行时,我查询数据库。我可以执行从数据库中获得的代码吗?我只在代码中存储main方法的内容。运行数据库的服务器是HTTP服务器。 数据库中的示例代码(仅供参考): 预期产量: 问题答案: 任何Java程序都是正确的Groovy程序。因此,您可以将Groovy依赖项添加到项目中,

  • 问题内容: 我正在使用Docker,并且拥有PHP,MySQL,Apache和Redis的堆栈。我现在需要添加MongoDB,因此我正在检查Dockerfile中的最新版本以及MongoDB Dockerhub中 的docker- entrypoint.sh 文件,但是我找不到设置默认数据库,管理员用户/密码以及可能进行身份验证的方法文件中容器的方法。 在MySQL中,您可以设置一些ENV变量,例

  • 我直接下载了C:\中的derby,并设置了DERBY_INSTALL和CLASSPATH变量: 因此它显示ij>,并且我能够使用命令行SQL语句创建数据库。但我必须使用Java代码创建数据库及其表。所以我在下面的源代码,但我不知道在哪里粘贴它和如何运行它。当我将它粘贴到db-derby-10.9.1.0-bin>bin文件夹中,并尝试使用'java MainClass komaldb c:\'在该

  • 问题内容: 我想从我的Java源代码创建流程图或序列图。 是否有任何插件可以帮助我做到这一点? 问题答案: 这个帖子是为流程图准备的吗?您是说序列图还是类图eUML是创建类图或序列图的好工具您可以在http://www.soyatec.com/main.php上找到它