Integrare Spanner con Spring Data JDBC (GoogleSQL)

Spring Data JDBC, che fa parte della più grande famiglia Spring Data, semplifica l'implementazione di repository basati su JDBC nella tua applicazione. Aggiunge un livello di astrazione tra l'applicazione e il database che semplifica il porting dell'applicazione da un sistema di database all'altro.

Configurare Spring Data JDBC per i database con dialetto Google SQL di Spanner

Puoi integrare i database con dialetto Google SQL di Spanner con Spring Data JDBC aggiungendo un dialetto per Google SQL di Spanner alla tua applicazione.

Configurazione del dialetto

Spring Data JDBC seleziona il dialetto del database utilizzato in base al driver JDBC configurato come origine dati in Spring Data. Devi aggiungere un provider di dialetti aggiuntivo all'applicazione per indicare a Spring Data JDBC di utilizzare il dialetto GoogleSQL quando viene utilizzato il driver JDBC Spanner:

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;
  }
}

Questo provider di dialetti deve essere aggiunto al file spring.factories nella tua applicazione:

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

Per vedere un esempio, consulta la completa applicazione di esempio funzionante su GitHub.

Dipendenze

Nel progetto, aggiungi le dipendenze Apache Maven per Spring Data JDBC e il 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>

Configurazione dell'origine dati

Configura application.properties per utilizzare il driver JDBC di Spanner e collegarti a un database Spanner con dialetto GoogleSQL.

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}

Applicazione di esempio completa

Per provare questa integrazione con un'applicazione di esempio, consulta Spring Data JDBC Sample Application with Spanner GoogleSQL.

Passaggi successivi