digital-garden/dev/snippet/Несколько подключений к базе H2.md
Struchkov Mark d0de9bc884
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
Исправление форматирования
2024-09-17 21:10:50 +03:00

2.6 KiB
Raw Blame History

aliases tags date zero-link parents linked
maturity/🌱
2024-04-07
../../meta/zero/00 Снипеты для Java

Когда я создаю обучающие репозитории к своим статьям, то использую H2 в качестве базы данных. Проблема с H2 в том, что когда запущено приложение, нельзя просто подключиться и посмотреть что происходит в БД. Эта заметка показывает, как провернуть этот финт.

Имеем следующее подключение к базе данных:

spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:blog
    password: password
    username: sa
  jpa:
    hibernate:
      ddl-auto: create-drop
    database-platform: org.hibernate.dialect.H2Dialect

В вашем Spring приложении необходимо создать следующий @Bean:

import org.h2.tools.Server;

@Configuration
public class BeanConfig {

    @Bean(initMethod = "start", destroyMethod = "stop")
    public Server inMemoryH2DatabaseaServer() throws SQLException {
        return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9090");
    }

}

Это фактически создает сервер для остальных подключений к H2.

Warning

Если класс org.h2.tools.Server не находится, то скорее всего у зависимости для H2 установлен scope runtime. Удалите значение scope и класс появится.

Теперь можно подсоединиться к H2 используя следующий url:

jdbc:h2:tcp://localhost:9090/mem:blog

Так выглядит окно соединения в IntelliJ Idea

Ограничение этого способа в том, что ==нельзя подключиться к базе, если приложение не работает.==


Мета информация

Область:: ../../meta/zero/00 Снипеты для Java Родитель:: Источник:: Автор:: Создана:: 2024-04-07

Дополнительные материалы

Дочерние заметки