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. Menambahkan lapisan abstraksi di antara aplikasi Anda serta database yang membuat aplikasi Anda lebih mudah ditransfer dari satu database sistem ke sistem lain.

Menyiapkan JDBC Spring Data 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 Anda untuk menginstruksikan JDBC Spring Data untuk 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 contohnya, buka aplikasi contoh yang berfungsi 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

Konfigurasi application.properties untuk menggunakan driver JDBC Spanner dan terhubung 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 Spanner PostgreSQL default.

Langkah selanjutnya