O Spring Data JDBC, que faz parte da família Spring Data mais ampla, facilita a implementação de repositórios baseados em JDBC na sua aplicação. Adiciona uma camada de abstração entre a sua aplicação e a base de dados, o que facilita a portabilidade da aplicação de um sistema de base de dados para outro.
Configure o Spring Data JDBC para bases de dados com dialeto GoogleSQL do Spanner
Pode integrar bases de dados com o dialeto GoogleSQL do Spanner com o Spring Data JDBC adicionando um dialeto para o GoogleSQL do Spanner à sua aplicação.
Configuração do dialeto
O Spring Data JDBC seleciona o dialeto da base de dados que usa com base no controlador JDBC que foi configurado como uma origem de dados no Spring Data. Tem de adicionar um fornecedor de dialeto adicional à sua aplicação para indicar ao Spring Data JDBC que use o dialeto GoogleSQL quando o controlador JDBC do Spanner for usado:
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;
}
}
Este fornecedor de dialetos tem de ser adicionado ao ficheiro spring.factories
na sua aplicação:
org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=org.springframework.data.jdbc.repository.config.DialectResolver.DefaultDialectProvider,com.google.cloud.spanner.sample.SpannerDialectProvider
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 o Spring Data JDBC e o controlador JDBC do 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>
Configuração da origem de dados
Configure o application.properties
para usar o controlador JDBC do Spanner e
ligar-se a uma base de dados com dialeto GoogleSQL do Spanner.
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}
Aplicação de exemplo completa
Para experimentar esta integração com uma aplicação de exemplo, consulte o artigo Aplicação de exemplo do Spring Data JDBC com o GoogleSQL.
O que se segue?
- Saiba mais sobre o Spring Data JDBC.
- Apresente um problema do GitHub para comunicar um erro ou fazer uma pergunta sobre o controlador JDBC do Spanner.