Mengintegrasikan Spanner dengan Spring Data JDBC (GoogleSQL)

Spring Data JDBC, bagian dari keluarga Spring Data yang lebih besar, memudahkan penerapan repositori berbasis JDBC di aplikasi Anda. Library ini menambahkan lapisan abstraksi antara aplikasi dan database Anda yang memudahkan aplikasi Anda untuk di-port dari satu sistem database ke sistem database lainnya.

Menyiapkan Spring Data JDBC untuk database dialek GoogleSQL Spanner

Anda dapat mengintegrasikan database dialek GoogleSQL Spanner dengan Spring Data JDBC dengan menambahkan dialek untuk Spanner GoogleSQL ke aplikasi Anda.

Konfigurasi dialek

Spring Data JDBC memilih dialek database yang digunakannya berdasarkan driver JDBC yang telah dikonfigurasi sebagai sumber data di Spring Data. Anda harus menambahkan penyedia dialek tambahan ke aplikasi untuk menginstruksikan Spring Data JDBC agar menggunakan dialek GoogleSQL saat driver JDBC Spanner digunakan:

public class SpannerDialectProvider implements DialectResolver.JdbcDialectProvider {
  @Override
  public Optional<Dialect> getDialect(JdbcOperations operations) {
    return Optional.ofNullable(
        operations.execute((ConnectionCallback<Dialect>) SpannerDialectProvider::getDialect));
  }

  @Nullable
  private static Dialect getDialect(Connection connection) throws SQLException {
    DatabaseMetaData metaData = connection.getMetaData();
    String name = metaData.getDatabaseProductName().toLowerCase(Locale.ENGLISH);
    if (name.contains("spanner")) {
      return SpannerDialect.INSTANCE;
    }
    return null;
  }
}

Penyedia dialek ini harus ditambahkan ke file spring.factories di aplikasi Anda:

org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=org.springframework.data.jdbc.repository.config.DialectResolver.DefaultDialectProvider,com.google.cloud.spanner.sample.SpannerDialectProvider

Untuk melihat contoh, lihat aplikasi contoh yang berfungsi lengkap di GitHub.

Dependensi

Dalam project Anda, tambahkan dependensi Apache Maven untuk Spring Data JDBC dan driver JDBC Spanner.

<dependencies>
  <!-- Spring Data JDBC -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jdbc</artifactId>
  </dependency>

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

Konfigurasi sumber data

Konfigurasikan application.properties untuk menggunakan driver JDBC Spanner dan hubungkan ke database dialek GoogleSQL Spanner.

spanner.project=my-project
spanner.instance=my-instance
spanner.database=spring-data-jdbc

spring.datasource.driver-class-name=com.google.cloud.spanner.jdbc.JdbcDriver
spring.datasource.url=jdbc:cloudspanner:/projects/${spanner.project}/instances/${spanner.instance}/databases/${spanner.database}

Aplikasi Contoh Lengkap

Untuk mencoba integrasi ini dengan aplikasi contoh, lihat Aplikasi Contoh JDBC Spring Data dengan Spanner GoogleSQL.

Langkah berikutnya