Spring Data JDBC, que forma parte de la gran familia de Spring Data, facilita la implementación de repositorios basados en JDBC en tu aplicación. Agrega una capa de abstracción entre tu aplicación y tu base de datos que facilita el portabilidad de tu aplicación de un sistema de base de datos a otro.
Configura Spring Data JDBC para bases de datos de Spanner con dialecto GoogleSQL
Para integrar bases de datos con el dialecto GoogleSQL de Spanner a Spring Data JDBC, agrega un dialecto para GoogleSQL de Spanner a tu aplicación.
Configuración del dialecto
Spring Data JDBC selecciona el dialecto de la base de datos que usa en función del controlador de JDBC que se configuró como fuente de datos en Spring Data. Debes agregar un proveedor de dialecto adicional a tu aplicación para indicarle a JDBC de Spring Data que use el dialecto GoogleSQL cuando se use el controlador JDBC de Spanner:
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 proveedor de dialecto se debe agregar al archivo spring.factories
de tu aplicación:
org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=org.springframework.data.jdbc.repository.config.DialectResolver.DefaultDialectProvider,com.google.cloud.spanner.sample.SpannerDialectProvider
Para ver un ejemplo, consulta la aplicación de muestra en funcionamiento completa en GitHub.
Dependencias
En tu proyecto, agrega dependencias de Apache Maven para Spring Data JDBC y el controlador JDBC de 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>
Configuración de la fuente de datos
Configura application.properties
para usar el controlador JDBC de Spanner y conectarte a una base de datos de Spanner con el dialecto GoogleSQL.
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}
Aplicación de ejemplo completa
Para probar esta integración con una aplicación de ejemplo, consulta la aplicación de ejemplo de JDBC de Spring Data con Spanner GoogleSQL.
¿Qué sigue?
- Obtén más información sobre Spring Data JDBC.
- Presenta un problema en GitHub para informar un error o hacer una pregunta sobre el controlador JDBC de Spanner.