diff --git a/dev/snippet/Несколько подключений к базе H2.md b/dev/snippet/Несколько подключений к базе H2.md new file mode 100644 index 00000000..71d71b93 --- /dev/null +++ b/dev/snippet/Несколько подключений к базе H2.md @@ -0,0 +1,59 @@ +--- +aliases: +tags: + - maturity/🌱 +date: + - - 2024-04-07 +zero-link: + - "[[../../meta/zero/00 Снипеты для Java|00 Снипеты для Java]]" +parents: +linked: +link: https://struchkov.dev/blog/ru/multiple-connections-to-h2/ +--- +Когда я создаю [обучающие репозитории к своим статьям](https://github.com/Example-uPagge), то использую H2 в качестве базы данных. Проблема с H2 в том, что когда запущено приложение, нельзя просто подключиться и посмотреть что происходит в БД. Эта заметка показывает, как провернуть этот финт. + +Имеем следующее подключение к базе данных: + +```yml +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`: + +```java +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: + +```text +jdbc:h2:tcp://localhost:9090/mem:blog +``` + +![Так выглядит окно соединения в IntelliJ Idea](../../meta/files/images/data-sources-in-idea.png) + +Ограничение этого способа в том, что ==нельзя подключиться к базе, если приложение не работает.== \ No newline at end of file diff --git a/meta/files/images/data-sources-in-idea.png b/meta/files/images/data-sources-in-idea.png new file mode 100644 index 00000000..3abd3131 Binary files /dev/null and b/meta/files/images/data-sources-in-idea.png differ diff --git a/meta/files/images/Снимок экрана 2024-09-03 в 14.55.01.png b/meta/files/images/Снимок экрана 2024-09-03 в 14.55.01.png deleted file mode 100644 index 0bca3fa6..00000000 Binary files a/meta/files/images/Снимок экрана 2024-09-03 в 14.55.01.png and /dev/null differ diff --git a/meta/zero/00 Снипеты для Java.md b/meta/zero/00 Снипеты для Java.md index 9c241680..9dd5bb65 100644 --- a/meta/zero/00 Снипеты для Java.md +++ b/meta/zero/00 Снипеты для Java.md @@ -10,4 +10,5 @@ aliases: - [Сериализация и Десериализация даты в Jackson](../../dev/snippet/Сериализация%20и%20Десериализация%20даты%20в%20Jackson.md) - [Создание linux сервиса для Java приложения](../../dev/snippet/Создание%20linux%20сервиса%20для%20Java%20приложения.md) - [Игнорирование ошибок сертификата OkHttp3](../../dev/snippet/Игнорирование%20ошибок%20сертификата%20OkHttp3.md) -- [Mock конфигурация Oauth2 для SpringBoot](../../dev/snippet/Mock%20конфигурация%20Oauth2%20для%20SpringBoot.md) \ No newline at end of file +- [Mock конфигурация Oauth2 для SpringBoot](../../dev/snippet/Mock%20конфигурация%20Oauth2%20для%20SpringBoot.md) +- [Несколько подключений к базе H2](../../dev/snippet/Несколько%20подключений%20к%20базе%20H2.md) \ No newline at end of file