Как создавать динамически БД PostgerSQL при исполнении исходного кода на Java, Hibernate?

Получил первое в жизни тестовое задание на работу, в котором надо сделать рестфул сервис. Одно из требований звучит так: "Приложение должно собираться при помощи maven без установки или настройки каких либо дополнительных компонент;" Я писал свое ентерпрайс приложение до этого, но саму базу данных создавал вручную через pgAdmin, а вот исходниками запускал скрипт, который создавал таблицы по типу:

DROP TABLE IF EXISTS buildings CASCADE;

Теперь же, как я понимаю, мне надо сделать так, чтобы при запуске проекта у проверяющего мое задание база как-то создалась сама или может требуется вообще что-то другое, типо удаленное базы данных. Я не уверен, так как опять же раньше тестовое задание никогда не делал. Подскажите, пожалуйста, кто поопытнее младшему товарищу)


Ответы (2 шт):

Автор решения: DeMmAge

Flyway тут в помощь. Со спрингом будет еще удобнее, чем с нативной Java ee.
Как пример:
В файле миграции V1_1__Create_tables.sql прописываем скрипт на создание нужных нам таблиц:

create sequence if not exists hibernate_sequence start 10 increment 1; -- Создание sequenc'а для генерации id.

create table buildings
(
    id                int8 not null unique,
    -- Остальные нужные поля
    primary key (id)
);

application.properties:

spring.jpa.generate-ddl=false
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=validate
→ Ссылка
Автор решения: AndreyKirov

ДД! Можно вот так:

public static void main(String[] args) {
            try {
                Class.forName("org.postgresql.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            try {
                Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres","su", "ТУТ ПАРОЛЬ su!");
                Statement statement = connection.createStatement();
                statement.execute("CREATE DATABASE testdb"); //создает бд
                connection.close();
                connection = 
 DriverManager.getConnection("jdbc:postgresql://localhost:5432/testdb","su", "ТУТ ПАРОЛЬ!");
                statement = connection.createStatement();
                statement.execute("CREATE TABLE test(did INTEGER, dname VARCHAR(20))"); //создает таблицу
                statement.execute("INSERT INTO test(did,dname) VALUES(1,'testname')"); //добавляет в таблицу
                ResultSet rs = statement.executeQuery("SELECT * FROM test");
                while(rs.next()){
                    System.out.println(rs.getInt("did")+" "+rs.getString("dname")); //проверяем, что в таблице
                }
                statement.close();
                System.out.println("+");
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
        }

ВАЖНО: Сначала вы подключаетесь к служебной базе postgres

→ Ссылка