Mengintegrasikan Spanner dengan Hibernate ORM (dialek GoogleSQL)

Hibernate adalah alat pemetaan relasional objek untuk bahasa pemrograman Java. Framework ini menyediakan pemetaan model domain berorientasi objek ke database relasional.

Anda dapat mengintegrasikan database dialek GoogleSQL dengan Hibernate. Spanner kompatibel dengan Hibernate ORM 6.x dan 7.x. Hibernate ORM memiliki dialek Spanner bawaan, dan ada juga dialek Hibernate yang dikelola Google yang tersedia di GitHub. Kedua dialek menghasilkan pernyataan SQL, DML, dan DDL untuk sebagian besar jenis dan hubungan entitas umum menggunakan anotasi Hibernate dan Java Persistence standar.

Menggunakan integrasi Hibernate bawaan (Hibernate ORM 7.4+)

Mulai dari Hibernate ORM 7.4, Hibernate menyertakan dialek bawaan untuk Spanner (org.hibernate.dialect.SpannerDialect).

Sebaiknya project baru menggunakan dialek bawaan ini, karena tidak memerlukan penambahan dependensi google-cloud-spanner-hibernate-dialect eksternal. Dialek bawaan mendukung fitur Hibernate standar. Jika aplikasi Anda memerlukan fitur khusus Spanner lanjutan, sebaiknya gunakan dialek eksternal yang dikelola Google.

Untuk menggunakan dialek bawaan, tambahkan dependensi Maven untuk inti Hibernate ORM dan driver JDBC Spanner ke file pom.xml project Anda. Untuk menemukan versi terbaru dependensi ini, lihat rilis Hibernate ORM dan rilis driver JDBC Spanner:

<dependencies>
  <!-- Hibernate ORM Core -->
  <dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>7.4.0.Final</version>
  </dependency>

  <!-- Cloud Spanner JDBC Driver -->
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-spanner-jdbc</artifactId>
    <version>2.40.0</version>
  </dependency>
</dependencies>

Konfigurasi file hibernate.properties project Anda (biasanya terletak di direktori src/main/resources) untuk menggunakan Dialek Spanner bawaan:

hibernate.dialect=org.hibernate.dialect.SpannerDialect
hibernate.connection.driver_class=com.google.cloud.spanner.jdbc.JdbcDriver
hibernate.connection.url=jdbc:cloudspanner:/projects/YOUR-PROJECT/instances/YOUR-INSTANCE/databases/YOUR-DATABASE

Untuk mengautentikasi dengan Spanner, driver JDBC memerlukan kredensial. Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file kredensial JSON akun layanan Anda. Jika tidak, driver akan menggunakan kredensial default yang ditetapkan di aplikasi gcloud Google Cloud CLI.

Menggunakan dialek Spanner yang dikelola Google

Untuk project yang menggunakan Hibernate versi sebelumnya (6.x atau 7.x sebelum 7.4), atau jika Anda memerlukan fitur khusus Spanner lanjutan yang belum didukung oleh dialek bawaan, Anda dapat menggunakan Dialek Spanner yang dikelola Google.

Fitur lanjutan yang didukung oleh dialek yang dikelola Google meliputi:

  • Hierarki tabel berselang-seling (@Interleaved)
  • Petunjuk kueri, indeks, dan pemindaian
  • Pengelompokan skema DDL
  • Pemberian tag transaksi (@TransactionTag)
  • Urutan gabungan (@PooledBitReversedSequenceGenerator)

Untuk menggunakan dialek yang dikelola Google, tambahkan dependensi Maven ke file pom.xml project Anda:

<dependencies>
  <!-- The Spanner JDBC driver dependency -->
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-spanner-jdbc</artifactId>
  </dependency>

  <!-- Hibernate core dependency -->
  <dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>6.4.4.Final</version>
  </dependency>
</dependencies>

Konfigurasi file hibernate.properties project Anda untuk menggunakan Dialek Spanner dan Driver JDBC yang dikelola Google:

hibernate.dialect=com.google.cloud.spanner.hibernate.SpannerDialect
hibernate.connection.driver_class=com.google.cloud.spanner.jdbc.JdbcDriver
hibernate.connection.url=jdbc:cloudspanner:/projects/YOUR-PROJECT/instances/YOUR-INSTANCE/databases/YOUR-DATABASE

Untuk mengetahui informasi selengkapnya tentang fitur dan rekomendasi untuk Hibernate saat menggunakan dialek ini, lihat dokumentasi referensi di GitHub.

Langkah berikutnya