Перейти к основному содержимому

Где встроенная база данных H2 хранит данные?

· 4 мин. чтения

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 .