Integra Spanner con Spring Data JPA (dialecto de GoogleSQL)

Spring Data JPA, que forma parte de la familia más grande de Spring Data, facilita la implementación de repositorios basados en JPA. Spring Data JPA admite Spanner y una amplia variedad de otros sistemas de bases de datos. Agrega una capa de abstracción entre tu aplicación y tu base de datos que facilita la portabilidad de tu aplicación de un sistema de base de datos a otro.

Configura Spring Data JPA para bases de datos con dialecto de GoogleSQL de Spanner

Puedes integrar bases de datos con el dialecto de GoogleSQL de Spanner en Spring Data JPA con el dialecto de Hibernate de Spanner de código abierto (SpannerDialect).

Para ver un ejemplo, consulta la aplicación de muestra en funcionamiento completa en GitHub.

Dependencias

En tu proyecto, agrega las dependencias de Apache Maven para Spring Data JPA, Spanner Hibernate Dialect y el controlador JDBC de código abierto compatible a nivel oficial con 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>

Configuración

Configura application.properties para usar el dialecto de Hibernate de Spanner y el controlador JDBC de Spanner.

# Spanner connection URL.
# - ${PROJECT_ID} Replace with your Google Cloud 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

Aplicación de muestra completa

En GitHub, encontrarás una aplicación de muestra funcional.

¿Qué sigue?