Integre o Spanner com o Spring Data JPA (dialeto GoogleSQL)

O Spring Data JPA, que faz parte da família Spring Data mais ampla, facilita a implementação de repositórios baseados em JPA. O Spring Data JPA suporta o Spanner e uma vasta gama de outros sistemas de bases de dados. Adiciona uma camada de abstração entre a sua aplicação e a sua base de dados que facilita a portabilidade da sua aplicação de um sistema de base de dados para outro.

Configure o Spring Data JPA para bases de dados do dialeto GoogleSQL do Spanner

Pode integrar bases de dados do dialeto GoogleSQL do Spanner com o Spring Data JPA através do dialeto do Hibernate do Spanner de código aberto (SpannerDialect).

Para ver um exemplo, consulte a aplicação de exemplo funcional completa no GitHub.

Dependências

No seu projeto, adicione dependências do Apache Maven para Spring Data JPA, Spanner Hibernate Dialect, e o controlador JDBC de código aberto oficialmente suportado pelo 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>

Configuração

Configure o application.properties para usar o Spanner Hibernate Dialect e o controlador JDBC do 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

Aplicação de exemplo completa

Está disponível uma aplicação de exemplo funcional no GitHub.

O que se segue?