1. Введение
В этой статье мы узнаем, как настроить приложение Spring Boot для использования встроенной базы данных H2 , а затем посмотрим, где встроенная база данных H2 хранит данные.
База данных H2 — это легкая база данных с открытым исходным кодом, которая на данный момент не имеет коммерческой поддержки. Мы можем использовать его в различных режимах:
- режим сервера — для удаленных подключений с использованием JDBC или ODBC через TCP/IP
- встроенный режим — для локальных подключений, использующих JDBC
- смешанный режим — это означает, что мы можем использовать H2 как для локальных, так и для удаленных подключений
H2 можно настроить для работы в качестве базы данных в памяти , но она также может быть постоянной, например, ее данные будут храниться на диске. Для целей этого руководства мы будем работать с базой данных H2 во встроенном режиме с включенной сохраняемостью, поэтому у нас будут данные на диске .
2. Встроенная база данных H2
Если мы хотим использовать базу данных H2, нам нужно добавить зависимости Maven h2
и spring-boot-starter-data-jpa
в наш файл pom.xml
:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<versionId>1.4.200</versionId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<versionId>2.3.4.RELEASE</versionId>
</dependency>
3. Встроенный режим сохранения H2
Мы уже упоминали, что H2 может использовать файловую систему для хранения данных базы данных. Самым большим преимуществом этого подхода по сравнению с in-memory является то, что данные базы данных не теряются после перезапуска приложения.
Мы можем настроить режим хранения с помощью свойства spring.datasource.url
в нашем файле application.properties .
Таким образом, мы можем настроить базу данных H2 на использование подхода в памяти, добавив параметр mem
в URL-адрес источника данных, за которым следует имя базы данных:
spring.datasource.url=jdbc:h2:mem:demodb
Если мы используем режим сохранения на основе файлов, мы установим одну из доступных опций для расположения на диске вместо параметра mem
. В следующем разделе мы обсудим, что это за варианты.
Давайте посмотрим, какие файлы создает база данных H2:
demodb.mv.db
— в отличие от других, этот файл создается всегда и содержит данные, журнал транзакций и индексыdemodb.lock.db
— это файл блокировки базы данных, и H2 воссоздает его, когда база данных используется.demodb.trace.db
— этот файл содержит информацию о трассировкеdemodb.123.temp.db
— используется для обработки больших двоичных объектов или огромных наборов результатов .demodb.newFile
— H2 использует этот файл для сжатия базы данных и содержит новый файл хранилища базы данных.demodb.oldFile
— H2 также использует этот файл для сжатия базы данных и содержит старый файл хранилища базы данных .
4. Место хранения встроенной базы данных H2
H2 очень гибок в отношении хранения файлов базы данных. На данный момент мы можем настроить его каталог хранения:
- директория на диске
- текущий каталог пользователя
- текущий каталог проекта или рабочий каталог
4.1. Каталог на диске
Мы можем указать конкретное расположение каталога, в котором будут храниться файлы нашей базы данных:
spring.datasource.url=jdbc:h2:file:C:/data/demodb
Обратите внимание, что в этой строке подключения последний фрагмент относится к имени базы данных . Кроме того, даже если мы пропустим ключевое слово файла в этом URL-адресе подключения к источнику данных, H2 будет управлять им и создавать файлы в указанном месте.
4.2. Текущий каталог пользователя
Если мы хотим хранить файлы базы данных в текущем пользовательском каталоге, мы будем использовать URL-адрес источника данных, который содержит тильду (~)
после ключевого слова файла
:
spring.datasource.url=jdbc:h2:file:~/demodb
Например, в системах Windows этот каталог будет C:/Users/<current user>
.
Чтобы сохранить файлы базы данных в подкаталоге текущего пользовательского каталога:
spring.datasource.url=jdbc:h2:file:~/subdirectory/demodb
Обратите внимание, что если подкаталог не существует, он будет создан автоматически .
4.3. Текущий рабочий каталог
Текущий рабочий каталог — это каталог, в котором запущено приложение, и он обозначается точкой (.) в URL-адресе источника данных. Если нам нужны файлы базы данных, мы настроим их следующим образом:
spring.datasource.url=jdbc:h2:file:./demodb
Чтобы сохранить файлы базы данных в подкаталоге текущего рабочего каталога:
spring.datasource.url=jdbc:h2:file:./subdirectory/demodb
Обратите внимание, что если подкаталог не существует, он будет создан автоматически.
5. Вывод
В этом кратком руководстве мы обсудили некоторые аспекты базы данных H2 и показали, где встроенная база данных H2 хранит данные. Мы также узнали, как настроить расположение файлов базы данных.
Полный пример кода доступен на GitHub .