Intégrer Spanner à Spring Data JDBC (GoogleSQL)

Spring Data JDBC, qui fait partie de la grande famille Spring Data, facilite l'implémentation de dépôts basés sur JDBC dans votre application. Il ajoute une couche d'abstraction entre votre application et votre base de données, ce qui facilite le transfert de votre application d'un système de base de données à un autre.

Configurer Spring Data JDBC pour les bases de données Spanner au format GoogleSQL

Vous pouvez intégrer des bases de données de dialecte GoogleSQL Spanner à Spring Data JDBC en ajoutant un dialecte pour Spanner GoogleSQL à votre application.

Configuration des dialectes

Spring Data JDBC sélectionne le dialecte de base de données qu'il utilise en fonction du pilote JDBC configuré en tant que source de données dans Spring Data. Vous devez ajouter un fournisseur de dialecte supplémentaire à votre application pour demander à Spring Data JDBC d'utiliser le dialecte GoogleSQL lorsque le pilote JDBC Spanner est utilisé:

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

Ce fournisseur de dialecte doit être ajouté au fichier spring.factories de votre application:

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

Pour voir un exemple, consultez l'application exemple fonctionnelle complète sur GitHub.

Dépendances

Dans votre projet, ajoutez les dépendances Apache Maven pour Spring Data JDBC et le pilote 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>

Configuration de la source de données

Configurez application.properties pour utiliser le pilote JDBC Spanner et vous connecter à une base de données Spanner en dialecte 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}

Exemple d'application complète

Pour essayer cette intégration avec un exemple d'application, consultez Exemple d'application JDBC Spring Data avec Spanner Google SQL.

Étape suivante