Чем открыть базу h2
H2 - это встроенный механизм базы данных с открытым исходным кодом, написанный на языке java, не ограниченный платформой, а H2 предоставляет очень удобную веб-консоль для работы и управления содержимым базы данных.
H2 также предоставляет режим совместимости, который может быть совместим с некоторыми основными базами данных, поэтому очень удобно использовать H2 в качестве базы данных в период разработки.
H2 - это база данных Java SQL. Основные особенности H2:
Установить базу данных H2
Мы можем запустить эту базу данных на разных платформах. В этой главе мы узнаем об установке базы данных H2 в Windows.
Ниже приведены инструкции по установке базы данных H2 в операционной системе Windows.
Шаг 3: Проверьте установку базы данных H2
Заполните все детали в вышеприведенном диалоговом окне, такие как сохраненные настройки, имя настроек, класс драйвера, URL JDBC, имя пользователя и пароль. В URL JDBC укажите местонахождение базы данных и имя базы данных. Имя пользователя и Пароль – это поля для имени пользователя и пароля базы данных. Нажмите Подключиться.
3. Смешанный режим
Этот режим представляет собой сочетание встроенного режима и гибридного режима. Одно приложение запускает базу данных H2 во встроенном режиме, а другие приложения могут использовать ее в качестве режима сервера для удаленного доступа.
Смешанный режим: одновременное локальное и удаленное подключение
Метод подключения к базе данных URL
тема | Формат URL и примеры |
---|---|
Встроенное (локальное) соединение | jdbc:h2:[file:][] jdbc:h2:~/test jdbc:h2:file:/data/sample jdbc:h2:file:C:/data/sample (Windows only) |
В памяти (личное) | jdbc:h2:mem: |
В памяти (по имени) | jdbc:h2:mem: jdbc:h2:mem:test_mem |
Серверный режим с использованием TCP / IP (Удаленное подключение) | jdbc:h2:tcp://[:]/[] jdbc:h2:tcp://localhost/~/test jdbc:h2:tcp://dbserv:8084/~/sample jdbc:h2:tcp://localhost/mem:test |
Серверный режим с использованием TLS (Удаленное подключение) | jdbc:h2:ssl://[:]/[] jdbc:h2:ssl://localhost:8085/~/sample; |
Использовать зашифрованные файлы | jdbc:h2:;CIPHER=AES jdbc:h2:ssl://localhost/~/test;CIPHER=AES jdbc:h2:file:~/secure;CIPHER=AES |
Метод блокировки файлов | jdbc:h2:;FILE_LOCK= jdbc:h2:file:~/private;CIPHER=AES;FILE_LOCK=SOCKET |
Открывать, только если он уже существует | jdbc:h2:;IFEXISTS=TRUE jdbc:h2:file:~/sample;IFEXISTS=TRUE |
Не закрывайте базу данных при выходе из виртуальной машины | jdbc:h2:;DB_CLOSE_ON_EXIT=FALSE |
Выполнить SQL для соединения | jdbc:h2:;INIT=RUNSCRIPT FROM '~/create.sql' jdbc:h2:file:~/sample;INIT=RUNSCRIPT FROM ‘~/create.sql’;RUNSCRIPT FROM ‘~/populate.sql’ |
Имя пользователя и / или пароль | jdbc:h2:[;USER=][;PASSWORD=] jdbc:h2:file:~/sample;USER=sa;PASSWORD=123 |
Настройки трассировки отладки | jdbc:h2:;TRACE_LEVEL_FILE= jdbc:h2:file:~/sample;TRACE_LEVEL_FILE=3 |
Игнорировать неизвестные настройки | jdbc:h2:;IGNORE_UNKNOWN_SETTINGS=TRUE |
Пользовательский режим доступа к файлам | jdbc:h2:;ACCESS_MODE_DATA=rws |
База данных в zip файле | jdbc:h2:zip:!/ jdbc:h2:zip:~/db.zip!/test |
Режим совместимости | jdbc:h2:;MODE= jdbc:h2:~/test;MODE=MYSQL;DATABASE_TO_LOWER=TRUE |
Автоматическое переподключение | jdbc:h2:;AUTO_RECONNECT=TRUE jdbc:h2:tcp://localhost/~/test;AUTO_RECONNECT=TRUE |
Автоматический режим смешивания | jdbc:h2:;AUTO_SERVER=TRUE jdbc:h2:~/test;AUTO_SERVER=TRUE |
Размер страницы | jdbc:h2:;PAGE_SIZE=512 |
Изменить другие настройки | jdbc:h2:;=[;=. ] jdbc:h2:file:~/sample;TRACE_LEVEL_SYSTEM_OUT=3 |
Режим работы H2
H2 поддерживает три различных режима работы, чтобы соответствовать большему количеству различных сценариев применения.
Как интегрировать базу данных H2 с Spring Boot?
Интеграция базы данных H2 с Spring Boot похожа на легкую прогулку.
Почему в памяти базы данных (h2)?
Скажем, мы хотим сделать несколько POC (подтверждение концепции) перед началом проекта, или мы работаем над прототипом, в таком случае сценарий не будет идеальным для создания фактической базы данных, так как это потребует больших усилий и стоимость наличия сервера базы данных, установки базы данных, создания схем, таблиц и т. д. Так что в таких сценариях мы используем базу данных памяти, такую как h2.
Что такое база данных H2?
H2 в словах является базой данных в памяти, которая имеет следующие особенности:
– Открытый исходный код
– Очень легкий. Размер банки h2 DB составляет всего около 1 МБ
– Написано исключительно на Java.
– Поддерживает стандартный SQL и JDBC API
Она называется базой данных в памяти, потому что она создается при запуске приложения и уничтожается при остановке приложения.
Шаг 2: Установите базу данных H2
После загрузки мы получаем установочный файл H2 для Windows (т.е. h2-setup-yyyy-mm-dd.exe) в каталоге Downloads. Чтобы начать процесс установки базы данных H2, дважды щелкните файл установщика.
Следующий экран является первым шагом в процессе установки. Укажите путь, по которому мы хотим установить сервер базы данных H2, как показано на следующем снимке экрана.
Как видно на приведенном выше снимке экрана, по умолчанию он будет использовать C: \ ProgramFiles (x86) \ H2 в качестве папки назначения. Нажмите «Далее», чтобы перейти к следующему шагу. Появится следующий экран.
На приведенном выше снимке экрана нажмите кнопку «Установить», чтобы начать процесс установки. После установки мы получаем следующий скриншот.
Нажмите Finish для завершения процесса установки.
2. Серверный режим
Серверный режим, также известный какУдаленный режим ИлиКлиент / сервер Режим, использование приложения JDBC Или ODBC API Удаленно ( TCP/IP Transfer) для доступа к базе данных. Аналогичен традиционным базам данных mysql и oracle.
Фактически, сам H2 Server также использует встроенный режим для запуска и запуска базы данных H2. Поскольку режим сервера - через удаленный ( TCP/IP Передача) данные доступа к соединению, его производительность ниже, чем в встроенном режиме.
Нет ограничений на количество одновременно открытых баз данных или открытых соединений на сервере.
Режим сервера: через JDBC или ODBC TCP/IP Установить удаленное соединение
H2 поддерживает три сервисных режима:
- веб-сервер: этот режим работы поддерживает доступ браузера к консоли H2.
- TCP-сервер: поддержка соединения клиент / сервер
- Сервер PG: поддерживает клиент PostgreSQL
Пример строки подключения для запуска службы tcp:
jdbc:h2:tcp://localhost/~/test Использовать домашний каталог пользователя
jdbc:h2:tcp://localhost//data/test Использовать абсолютный путь
H2 использование
Наибольшее применение H2 заключается в том, что его можно упаковать и выпустить вместе с приложением, так что небольшой объем структурированных данных можно очень удобно хранить.
Другое его использование - для модульного тестирования. Скорость запуска высока, и функцию сохранения можно отключить.После выполнения каждого варианта использования он будет возвращен в исходное состояние.
Третье использование H2 в качестве кеша, как дополнение к NoSQL. Когда модель данных должна быть реляционной в некоторых сценариях, ее можно использовать как Memcached в качестве буферного уровня серверной части MySQL / Oracle для кэширования данных, которые не часто меняются, но требуют частого доступа, например таблиц словаря и таблиц разрешений. Но эта системная архитектура будет более сложной.
Шаг 1
Проверьте установку Java
Если JDK установлен в системе, попробуйте следующую команду, чтобы проверить версию Java.
Если JDk успешно установлен в системе, мы получим следующий вывод.
Если JDK не установлен в системе, перейдите по следующей ссылке, чтобы установить JDK .
Шаг 1: Загрузите установочный файл H2
Загрузите последнюю версию базы данных H2 по указанной ссылке. По этой ссылке вы получите последнюю версию базы данных H2 в двух типах. Один из них – это тип установщика Windows (то есть файл .exe), а второй – независимый от платформы zip-файл для других операционных систем.
Щелкните установщик Windows, чтобы загрузить поддерживаемую Windows базу данных H2 после загрузки файла .exe. В этом случае мы используем базу данных H2 с версией 1.4.192.
Что такое H2 Console?
Консольное приложение H2 помогает получить доступ к базе данных из браузера.
Так что в основном это клиент-серверное приложение. Поскольку мы используем h2 во встроенном режиме (h2 jar является частью нашего приложения), поэтому, как только наше приложение будет запущено, консольный сервер h2 также будет запущен, и оттуда мы сможем подключиться к базе данных h2.
Шаг 3
Импортируйте извлеченную папку в Eclipse как существующий проект Maven.
H2 прост в использовании
2. Распакуйте загружаемый пакет, и вы можете использовать его. Каталог после распаковки выглядит следующим образом
3. Запуск в среде Windows h2.bat , Запуск в среде Linux h2.sh Чтобы открыть консоль
По умолчанию служебный порт TCP базы данных H2 - 9092, порт клиента - 8082, а порт службы PG - 5435.
5. Выберите китайский язык и нажмите «Подключиться», чтобы автоматически создать тестовую базу данных. Файл базы данных находится в ~ В каталоге ~ Представитель Собственный каталог пользователя 。
есть ли способ просмотреть содержимое базы данных H2 или HSQLDB в памяти для просмотра? Например, во время сеанса отладки с Hibernate, чтобы проверить, когда выполняется flush; или убедиться, что сценарий, который создает экземпляр DB, дает ожидаемый результат.
существует ли аддон или библиотека, которую вы можете встроить в свой код, чтобы разрешить это?
пожалуйста, укажите, о каком из них вы говорите (H2 или HSQLDB), если у вас есть ответить конкретно на один из них.
вы можете запустить H2 веб-сервер в вашем приложении, которое будет иметь доступ к той же базе данных в памяти. Вы также можете получить доступ к H2, работающему в режиме сервера, используя любой общий клиент JDBC, такой как SquirrelSQL.
теперь вы можете подключиться к базе данных через jdbc:h2:mem:foo_db URL в том же процессе или просмотрите foo_db база данных с помощью localhost:8082 . Не забудьте закрыть оба сервера. См. также: база данных H2 в режиме памяти невозможно получить доступ с помощью Console.
вы также можете использовать Spring:
BTW вы должны зависеть только от утверждений, а не от ручного просмотра содержимого базы данных. Использовать только для устранения неполадок.
N. B. Если вы используете Spring test framework, вы не увидите изменений, внесенных запущенной транзакцией, и эта транзакция будет откатываться сразу после теста.
для H2, вы можете запустите веб-сервер в своем коде во время сеанса отладки, если у вас есть объект подключения к базе данных. Вы можете добавить эту строку в свой код или как "выражение часов" (динамически):
серверный инструмент запустит веб-браузер локально, который позволит вам получить доступ к базе данных.
в H2, что работает для меня:
I код, запуск сервера, как:
это запускает сервер на localhost порт 9092.
затем в коде установите соединение с БД по следующему URL-адресу JDBC:
при отладке в качестве клиента для проверки БД я использую тот, который предоставлен H2, что достаточно хорошо, чтобы запустить его, вам просто нужно запустить следующую Java main отдельно
запуск веб сервер с приложением на 8082, Запустите браузер на localhost:8082
и затем вы можете ввести предыдущий URL, чтобы увидеть DB
С HSQLDB у вас есть несколько встроенных опций.
есть два менеджера баз данных GUI и интерфейс командной строки для базы данных. Классы для них:
вы можете запустить один из вышеперечисленных приложений и получить доступ к базам данных в памяти.
пример с JBoss приведен здесь:
вы также можете запустить сервер с ваше приложение, указывающее на базу данных в памяти.
вы можете выставить его как функцию JMX, начинающуюся через JConsole:
это контроллер Play 2 для инициализации H2 TCP и веб-серверов:
для HSQLDB для меня сработало следующее:
и это вызвало GUI с моими таблицами и данными.
Я также попробовал версию Swing, но у нее был только main , и я не был уверен в аргументах для передачи. Если кто знает, пожалуйста, напишите здесь.
просто потому, что я часами искал правильное имя базы данных: имя базы данных-это имя вашего источника данных. Поэтому попробуйте с URL jdbc:hsqldb:mem:dataSource, если у вас есть компонент источника данных с данных. Если это не работает, попробуйте столбцам по умолчанию.
У меня проблема с удаленным подключением H2 версии 1.4.190 к inMemory (а также в файле) с Connection is broken: "unexpected status 16843008" пока не понизится до 1.3.176. См.Grails доступ к H2 TCP-сервер зависает
сервер работает с Intellij Idea U через url "jdbc:h2: tcp://localhost: 9092/~/default".
предположим, я хочу создать и использовать базу данных H2 для моего интеграционные тесты.
Maven имеет команду для запуска тестов: mvn test .
есть ли способ сказать maven запустить сервер базы данных H2 для тестов и остановить его, когда это будет сделано?
Я представляю, что это работает аналогично тому, как я могу запустить tomcat с помощью команды Maven ( mvn tomcat:run ).
Извините, если этот вопрос бессмысленный, я все еще оборачиваю голову вокруг нового концепция.
я смог заставить его работать без использования внешнего сервера, просто добавив зависимость от H2 через Maven, а затем используя этот компонент:
опять же, это потребовало, чтобы я использовал файловую БД вместо памяти. Но это делает свое дело.
вы можете создать 2 небольших класса с основными методами, которые запускают и останавливают базу данных. идея состоит в том, чтобы запустить класс StartServer до запуска интеграционных тестов, а затем класс StopServer после запуска тестов.
вы должны сделать то же самое для вашего сервера БД, как описано где-то в документ (описание для запуска и остановки причала в интеграционных тестах)
В пом.xml вы должны определить Maven-exec-plugin для запуска exec: java цель и создать 2 исполнения (1 для вызова StartServer и 1 для StopServer):
надеюсь, что это то, что вы хотите
этот плагин отлично работает, чтобы создать новый H2 DB с режимом tcp перед интеграционными тестами (фаза плагина по умолчанию):H2-maven-плагин на github
это не хорошо документировано, но вы можете проверить источники Mojo, чтобы узнать параметры конфигурации. Он опубликован на Maven central.
в основном, для интеграционных тестов, вы можете Maven для:
- резервируйте случайно доступные сетевые порты для вашего Tomcat сервер и ваш H2 (чтобы избежать конфликтов портов)
- запустите сервер H2
- запустите сервер Tomcat
- запустить интеграционные тесты
- остановить сервер Tomcat
- остановить сервер H2
Это может быть достигнуто с конфигурацией Maven, выглядящей так. Предполагая, что ваши интеграционные тесты аннотируются с пользовательским интерфейсом JUnit категории:
эта конфигурация Maven отлично работает для я:
вы можете использовать фильтры maven в контекстном файле tomcat, чтобы заменить порт:
С содержанием файла:
или если вы не хотите источник данных JNDI, вы можете использовать источник данных, объявленный весной, используя то же свойство.
одна дополнительная поездка, если вы хотите настроить интеграционные тесты tomcat и запустить интеграционные тесты из IDE:
вы можете использовать используйте свойство для fork или нет сервера Tomcat:
когда вы установите fork=false, сервер заблокирует и maven не будет продолжаться, поэтому интеграционные тесты не будут запускаться, но вы сможете запускать их из своей ide.
Я только что начал проект для плагина H2 для maven @ bitbucket. Я буду признателен за любую помощь.
надеюсь, это будет полезно.
в моем проекте для модульного тестирования я попросил Spring обработать создание и инициализацию этой базы данных. Как указано в документация H2, вы можете создать боб для этого:
вам просто нужно запустить контекст Spring с этой конфигурацией при запуске модульных тестов.
Я создаю файловую базу данных H2 до запуска модульных тестов. Файл живет в target каталог и может быть удален в любое время с помощью mvn clean .
Я использую Maven-sql-плагин следующим образом:
базу данных можно создать, запустив mvn process-test-resources . При выполнении тестов убедитесь, что вы подключились к базе данных в target/db/testdb через свойства гибернации.
Вам также понадобится зависимость от com.h2database.h2 в maven's зависимости.
Если вы хотите сделать это в памяти, просто используйте другой URL:
вы можете дать дополнительные параметры, такие как:; DB_CLOSE_DELAY=-1
поскольку H2 не предоставляет плагин Maven, вы должны запустить его с помощью Maven-antrun-plugin. Напишите код для запуска и остановки H2 engine в задаче ant и вызовите его при запуске и остановке интеграционного теста.
следующий делает работу для меня (просто используя h2 зависимостей и exec-maven-plugin ):
обратите внимание, в моем pom.xml на com.h2database:h2 не была зависимостью проекта. Если у вас это есть, вам не нужно явно называть его зависимостью плагина.
В этом руководстве мы попытаемся изучить, как мы можем интегрироваться с базой данных H2 в приложении Spring Boot.
Прежде чем мы это проверим, давайте разберемся с некоторыми основами базы данных H2, как упомянуто ниже, а затем обсудим интеграцию базы данных H2 с Spring Boot.
Что такое база данных H2?
Что такое H2 Console?
Почему в памяти (H2) база данных?
Как интегрировать базу данных H2 с Spring Boot?
Параметры строки подключения
DB_CLOSE_DELAY : Не закрывать базу данных после разрыва последнего соединения
MODE=MySQL : Режим совместимости, H2 совместим с несколькими базами данных, значение может быть: DB2, Derby, HSQLDB, MSSQLServer, MySQL, Oracle, PostgreSQL
AUTO_SERVER=TRUE : Запуск режима автоматического микширования, позволяющий открывать несколько соединений, этот параметр не поддерживает режим работы в памяти
AUTO_RECONNECT=TRUE : Автоматически переподключаться после потери связи
TRACE_LEVEL_SYSTEM_OUT 、 TRACE_LEVEL_FILE : Вывод журнала трассировки в консоль или файл, значение 0 - ВЫКЛ., 1 - ОШИБКА (значение по умолчанию), 2 - ИНФОРМАЦИЯ, 3 - ОТЛАДКА
SET TRACE_MAX_FILE_SIZE mb : Установите размер файла журнала трассировки, по умолчанию - 16M
1. Встроенный режим
Во встроенном режиме H2 и приложение запускаются в одной JVM, а H2 запускается приложением. Этот режим также является наиболее эффективным и официально рекомендованным.
Недостатком является то, что базу данных можно открыть только на виртуальной машине (и в загрузчике классов) в любое время. Как и во всех режимах, поддерживаются как постоянные базы данных, так и базы данных в памяти. Нет ограничений на количество одновременно открытых баз данных или количество открытых соединений.
Во встроенном режиме операции ввода-вывода могут выполняться потоками приложений, которые выполняют команды SQL. Приложение не может прерывать эти потоки, это может вызвать повреждение базы данных, потому что JVM закрывает дескриптор ввода-вывода во время прерывания потока. Рассмотрим другие методы контроля выполнения приложения. Когда может произойти перерыв, вы можете async: Файловая система используется в качестве решения, но полная безопасность не может быть гарантирована. Рекомендуем использоватьКлиент-сервер Модель, клиент может прервать собственный поток.
Встроенный режим: локальное соединение с использованием JDBC
База данных постоянно хранится в виде одного файла.
~/.h2/DBName Указывает место хранения файла базы данных.При первом подключении данные будут автоматически созданы.
Шаг 4
Откройте файл pom.xml, и он будет иметь следующую запись для базы данных H2
H2 – это база данных, написанная на Java. Мы можем легко встроить эту базу данных в наше приложение, используя JDBC. Мы можем запустить это на многих разных платформах или в любой версии Java Runtime Environment. Однако перед установкой базы данных в системе должна быть установлена Java.
Шаг 2
Заполните группу, artifactId и зависимости (web и H2) и нажмите кнопку «Создать проект». Он загрузит zip с именем springBootAndH2DbIntegration на ваш локальный диск. Извлеките почтовый индекс.
Читайте также: