Spring Data JDBC, que forma parte de la familia Spring Data, facilita la implementación de repositorios basados en JDBC en tu aplicación. Añade una capa de abstracción entre tu aplicación y tu base de datos, lo que facilita la portabilidad de tu aplicación de un sistema de base de datos a otro.
Configurar Spring Data JDBC para bases de datos con dialecto GoogleSQL de Spanner
Puedes integrar bases de datos con dialecto GoogleSQL de Spanner con Spring Data JDBC añadiendo un dialecto para GoogleSQL de Spanner a tu aplicación.
Configuración de dialecto
Spring Data JDBC selecciona el dialecto de la base de datos que utiliza en función del controlador JDBC que se haya configurado como fuente de datos en Spring Data. Debe añadir un proveedor de dialecto adicional a su aplicación para indicar a Spring Data JDBC que use el dialecto de GoogleSQL cuando se utilice 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 debe añadirse 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 ejemplo funcional completa en GitHub.
Dependencias
En tu proyecto, añade las 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 que use el controlador JDBC de Spanner y se conecte a una base de datos de Spanner con 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 Aplicación de ejemplo de Spring Data JDBC con Spanner GoogleSQL.
Siguientes pasos
- Consulta más información sobre Spring Data JDBC.
- Registra una incidencia en GitHub para informar de un error o hacer una pregunta sobre el controlador JDBC de Spanner.