Intégrer Spanner à Spring Data JPA (dialecte GoogleSQL)

Spring Data JPA, qui fait partie de la famille Spring Data, facilite l'implémentation de dépôts basés sur JPA. Spring Data JPA est compatible avec Spanner et un large éventail d'autres systèmes de base de données. Il ajoute une couche d'abstraction entre votre application et votre base de données, ce qui facilite le port de votre application d'un système de base de données à un autre.

Configurer Spring Data JPA pour les bases de données utilisant le dialecte GoogleSQL dans Spanner

Vous pouvez intégrer des bases de données de dialecte GoogleSQL Spanner à Spring Data JPA à l'aide du dialecte de Hibernate Spanner Open Source (SpannerDialect).

Pour voir un exemple, reportez-vous à l'exemple d'application fonctionnel complet sur GitHub.

Dépendances

Dans votre projet, ajoutez des dépendances Apache Maven pour Spring Data JPA, le dialecte Spanner Hibernate et le pilote JDBC Open Source officiellement compatible avec Spanner.

  <dependencies>
    <!-- Spring Data JPA -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- Hibernate Dialect and JDBC Driver dependencies-->
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-hibernate-dialect</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-jdbc</artifactId>
    </dependency>
  </dependencies>

Configuration

Configurez application.properties pour utiliser le dialecte Hibernate Spanner et le pilote JDBC Spanner.

# Spanner connection URL.
# - ${PROJECT_ID} Replace with your GCP project ID
# - ${INSTANCE_ID} Replace with your Spanner instance ID
# - ${DATABASE_NAME} Replace with the name of your Spanner database that you created inside your Spanner instance

spring.datasource.url=jdbc:cloudspanner:/projects/${PROJECT_ID}/instances/${INSTANCE_ID}/databases/${DATABASE_NAME}

# Specify the Spanner JDBC driver.
spring.datasource.driver-class-name=com.google.cloud.spanner.jdbc.JdbcDriver

# Specify the Spanner Hibernate dialect.
spring.jpa.properties.hibernate.dialect=com.google.cloud.spanner.hibernate.SpannerDialect

spring.jpa.hibernate.ddl-auto=update

# Settings to enable batching statements for efficiency
spring.jpa.properties.hibernate.jdbc.batch_size=100
spring.jpa.properties.hibernate.order_inserts=true

# You can display SQL statements and stats for debugging if needed.
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true

Exemple d'application complète

Un exemple d'application fonctionnelle est disponible sur GitHub.

Étapes suivantes