Spring Data JDBC, che fa parte della più grande famiglia Spring Data, semplifica l'implementazione di repository basati su JDBC nella tua applicazione. Spring Data JDBC supporta PostgreSQL e altri sistemi di database. Aggiunge un livello di astrazione tra l'applicazione e il database che semplifica il porting dell'applicazione da un sistema di database all'altro.
Configurare Spring Data JDBC per i database in dialetto PostgreSQL di Spanner
Puoi integrare i database con dialetto PostgreSQL di Spanner con Spring Data JDBC utilizzando il dialetto PostgreSQL standard incluso con Spring Data JDBC e il driver JDBC Spanner.
Per questa integrazione non è necessario utilizzare PGAdapter.
Configurazione del dialetto
Spring Data JDBC seleziona il dialetto del database utilizzato in base al driver JDBC configurato come origine dati in Spring Data. Devi aggiungere un'altra classe di configurazione Spring all'applicazione per indicare a Spring Data JDBC di utilizzare il dialetto PostgreSQL quando viene utilizzato il driver JDBC Spanner:
@Configuration
public class JdbcConfiguration extends AbstractJdbcConfiguration {
/** Override the dialect auto-detection, so it also returns PostgreSQL for Spanner. */
@Override
public Dialect jdbcDialect(@Nonnull NamedParameterJdbcOperations operations) {
if (isCloudSpannerPG(operations.getJdbcOperations())) {
return PostgresDialect.INSTANCE;
}
return super.jdbcDialect(operations);
}
/** Returns true if the current database is a Spanner PostgreSQL-dialect database. */
public static boolean isCloudSpannerPG(JdbcOperations operations) {
return Boolean.TRUE.equals(
operations.execute(
(ConnectionCallback<Boolean>)
connection ->
connection.isWrapperFor(CloudSpannerJdbcConnection.class)
&& com.google.cloud.spanner.Dialect.POSTGRESQL.equals(
connection.unwrap(CloudSpannerJdbcConnection.class).getDialect())));
}
}
Per vedere un esempio, consulta la completa applicazione di esempio funzionante su GitHub.
Dipendenze
Nel progetto, aggiungi le dipendenze Apache Maven per Spring Data JDBC e il driver JDBC 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>
Configurazione dell'origine dati
Configura application.properties
in modo che utilizzi il driver JDBC Spanner e collegalo a un database Spanner con dialetto PostgreSQL.
# This profile uses a Spanner PostgreSQL database.
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}
Applicazione di esempio completa
Per provare questa integrazione con un'applicazione di esempio, consulta Spring Data JDBC Sample Application with Spanner PostgreSQL.
Passaggi successivi
- Scopri di più su Spring Data JDBC.
- Invia una segnalazione su GitHub per segnalare un bug o porre una domanda sul driver JDBC Spanner.