O Spring Data JPA, parte da família mais ampla do Spring Data, facilita a implementação de repositórios baseados em JPA. O Spring Data JPA oferece suporte ao Spanner e a uma ampla gama de outros sistemas de banco de dados. Ele adiciona uma camada de abstração entre o aplicativo e o banco de dados, facilitando a portabilidade de um sistema de banco de dados para outro.
Configurar o Spring Data JPA para bancos de dados com dialeto GoogleSQL do Spanner
É possível integrar bancos de dados do dialeto GoogleSQL do Spanner com o Spring Data JPA usando o
Dialeto do Hibernate do Spanner
(SpannerDialect
) de código aberto.
Para conferir um exemplo, consulte o aplicativo de exemplo funcional (link em inglês) no GitHub.
Dependências
No projeto, adicione as dependências do Apache Maven para o Spring Data JPA, o Dialeto do Spanner Hibernate e o driver JDBC de código aberto oficialmente compatível com o 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 application.properties
para usar o Dialecto do Hibernate
do Spanner e o Driver 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
Exemplo de aplicativo completo
Um exemplo de aplicativo funcional está disponível no GitHub.
A seguir
- Saiba mais sobre o Spring Data JPA.
- Saiba mais sobre o Hibernate ORM.
- Confira o repositório do Dialeto do Spanner no GitHub.
- Registre um problema no GitHub para relatar um bug ou fazer uma pergunta sobre o Hibernate.
- Integrar o Spanner com o Spring Data JPA (dialeto do PostgreSQL).