Несколько подключений к базе H2
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
dfb2659b9c
commit
b1402afa7d
59
dev/snippet/Несколько подключений к базе H2.md
Normal file
59
dev/snippet/Несколько подключений к базе H2.md
Normal file
@ -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)
|
||||||
|
|
||||||
|
Ограничение этого способа в том, что ==нельзя подключиться к базе, если приложение не работает.==
|
BIN
meta/files/images/data-sources-in-idea.png
Normal file
BIN
meta/files/images/data-sources-in-idea.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 290 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.7 MiB |
@ -11,3 +11,4 @@ aliases:
|
|||||||
- [Создание linux сервиса для Java приложения](../../dev/snippet/Создание%20linux%20сервиса%20для%20Java%20приложения.md)
|
- [Создание linux сервиса для Java приложения](../../dev/snippet/Создание%20linux%20сервиса%20для%20Java%20приложения.md)
|
||||||
- [Игнорирование ошибок сертификата OkHttp3](../../dev/snippet/Игнорирование%20ошибок%20сертификата%20OkHttp3.md)
|
- [Игнорирование ошибок сертификата OkHttp3](../../dev/snippet/Игнорирование%20ошибок%20сертификата%20OkHttp3.md)
|
||||||
- [Mock конфигурация Oauth2 для SpringBoot](../../dev/snippet/Mock%20конфигурация%20Oauth2%20для%20SpringBoot.md)
|
- [Mock конфигурация Oauth2 для SpringBoot](../../dev/snippet/Mock%20конфигурация%20Oauth2%20для%20SpringBoot.md)
|
||||||
|
- [Несколько подключений к базе H2](../../dev/snippet/Несколько%20подключений%20к%20базе%20H2.md)
|
Loading…
Reference in New Issue
Block a user