Mengintegrasikan Spanner dengan Spring Data JDBC (PostgreSQL)

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

Menyiapkan Spring Data JDBC untuk database dialek PostgreSQL Spanner

Anda dapat mengintegrasikan database dialek PostgreSQL Spanner dengan Spring Data JDBC menggunakan dialek PostgreSQL standar yang disertakan dengan Spring Data JDBC dan driver JDBC Spanner.

Anda tidak perlu menggunakan PGAdapter untuk integrasi ini.

Konfigurasi dialek

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

@Configuration
public class JdbcConfiguration extends AbstractJdbcConfiguration {

  /** Override the dialect auto-detection, so it also returns PostgreSQL for Spanner. */
  @Override
  public Dialect jdbcDialect(@Nonnull NamedParameterJdbcOperations operations) {
    if (isCloudSpannerPG(operations.getJdbcOperations())) {
      return PostgresDialect.INSTANCE;
    }
    return super.jdbcDialect(operations);
  }

  /** Returns true if the current database is a Spanner PostgreSQL-dialect database. */
  public static boolean isCloudSpannerPG(JdbcOperations operations) {
    return Boolean.TRUE.equals(
        operations.execute(
            (ConnectionCallback<Boolean>)
                connection ->
                    connection.isWrapperFor(CloudSpannerJdbcConnection.class)
                        && com.google.cloud.spanner.Dialect.POSTGRESQL.equals(
                            connection.unwrap(CloudSpannerJdbcConnection.class).getDialect())));
  }
}

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 PostgreSQL Spanner.

# This profile uses a Spanner PostgreSQL database.

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 PostgreSQL Spanner.

Langkah selanjutnya