Struchkov Mark
ad35bf983f
All checks were successful
continuous-integration/drone/push Build is passing
2.3 KiB
2.3 KiB
aliases | tags | date | zero-link | parents | linked | link | ||
---|---|---|---|---|---|---|---|---|
|
2024-04-07 |
|
https://struchkov.dev/blog/ru/multiple-connections-to-h2/ |
Когда я создаю обучающие репозитории к своим статьям, то использую 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 установлен scoperuntime
. Удалите значениеscope
и класс появится.
Теперь можно подсоединиться к H2 используя следующий url:
jdbc:h2:tcp://localhost:9090/mem:blog
Ограничение этого способа в том, что ==нельзя подключиться к базе, если приложение не работает.==