Di mana Database Tertanam H2 Menyimpan Data?

1. Perkenalan

Di artikel ini, kita akan mempelajari cara mengonfigurasi aplikasi Spring Boot untuk menggunakan database H2 yang disematkan dan kemudian melihat di mana database yang disematkan H2 menyimpan data.

Database H2 adalah database ringan dan open-source tanpa dukungan komersial pada saat ini. Kami dapat menggunakannya dalam berbagai mode:

  • mode server - untuk koneksi jarak jauh menggunakan JDBC atau ODBC melalui TCP / IP
  • mode tertanam - untuk koneksi lokal yang menggunakan JDBC
  • mode campuran - ini berarti kita dapat menggunakan H2 untuk koneksi lokal dan jarak jauh

H2 dapat dikonfigurasi untuk dijalankan sebagai database dalam memori, tetapi juga dapat persisten, misalnya datanya akan disimpan pada disk. Untuk keperluan tutorial ini, kita akan bekerja dengan database H2 dalam mode tertanam dengan persistensi yang diaktifkan sehingga kita akan memiliki data di disk .

2. Basis Data H2 Tertanam

Jika kita ingin menggunakan database H2, kita perlu menambahkan dependensi Maven h2 dan spring-boot-starter-data-jpa ke file pom.xml kita :

 com.h2database h2 1.4.200 runtime   org.springframework.boot spring-boot-starter-data-jpa 2.3.4.RELEASE 

3. Mode Persistensi Tertanam H2

Kami telah menyebutkan bahwa H2 dapat menggunakan sistem file untuk menyimpan data database. Keuntungan terbesar dari pendekatan ini dibandingkan dengan yang di memori adalah bahwa data database tidak hilang setelah aplikasi dimulai ulang.

Kami dapat mengonfigurasi mode penyimpanan melalui properti spring.datasource.url di file application.properties kami . Dengan cara ini, kita dapat mengatur database H2 untuk menggunakan pendekatan dalam memori dengan menambahkan parameter mem di URL sumber data, diikuti dengan nama database:

spring.datasource.url=jdbc:h2:mem:demodb

Jika kami menggunakan mode persistensi berbasis file, kami akan menetapkan salah satu opsi yang tersedia untuk lokasi disk alih-alih parameter mem . Di bagian selanjutnya, kita akan membahas apa saja pilihan tersebut.

Mari kita lihat file mana yang dibuat oleh database H2:

  • demodb.mv.db - tidak seperti yang lain, file ini selalu dibuat dan berisi data, log transaksi, dan indeks
  • demodb.lock.db - ini adalah file kunci database dan H2 membuatnya kembali ketika database sedang digunakan
  • demodb.trace.db - file ini berisi informasi jejak
  • demodb.123.temp.db - digunakan untuk menangani blob atau kumpulan hasil yang sangat besar
  • demodb.newFile - H2 menggunakan file ini untuk pemadatan database dan berisi file penyimpanan database baru
  • demodb.oldFile - H2 juga menggunakan file ini untuk pemadatan database dan berisi file penyimpanan database lama

4. Lokasi Penyimpanan Basis Data Tertanam H2

H2 sangat fleksibel dalam hal penyimpanan file database. Saat ini, kita dapat mengkonfigurasi direktori penyimpanannya ke:

  • direktori pada disk
  • direktori pengguna saat ini
  • direktori proyek saat ini atau direktori kerja

4.1. Direktori di Disk

Kita dapat mengatur lokasi direktori tertentu dimana file database kita akan disimpan:

spring.datasource.url=jdbc:h2:file:C:/data/demodb

Perhatikan bahwa dalam string koneksi ini, potongan terakhir mengacu pada nama database . Selain itu, meskipun kami melewatkan kata kunci file dalam URL koneksi sumber data ini, H2 akan mengelolanya dan membuat file di lokasi yang disediakan.

4.2. Direktori Pengguna Saat Ini

Jika kami ingin menyimpan file database di direktori pengguna saat ini, kami akan menggunakan URL sumber data yang berisi tilde (~) setelah kata kunci file :

spring.datasource.url=jdbc:h2:file:~/demodb

Misalnya, dalam sistem Windows, direktori ini akan menjadi C: / Users / .

Untuk menyimpan file database di subdirektori dari direktori pengguna saat ini:

spring.datasource.url=jdbc:h2:file:~/subdirectory/demodb

Perhatikan bahwa jika subdirektori tidak ada, maka akan dibuat secara otomatis .

4.3. Direktori Kerja Saat Ini

Direktori kerja saat ini adalah tempat aplikasi dimulai, dan dirujuk sebagai titik (.) Di URL sumber data. Jika kita menginginkan file database di sana, kita akan mengkonfigurasinya sebagai berikut:

spring.datasource.url=jdbc:h2:file:./demodb

Untuk menyimpan file database di subdirektori dari direktori kerja saat ini:

spring.datasource.url=jdbc:h2:file:./subdirectory/demodb

Perhatikan bahwa jika subdirektori tidak ada, maka akan dibuat secara otomatis.

5. Kesimpulan

Dalam tutorial singkat ini, kami membahas beberapa aspek database H2 dan menunjukkan di mana database tertanam H2 menyimpan data. Kami juga belajar cara mengkonfigurasi lokasi file database.

Contoh kode lengkap tersedia di GitHub.