Spring Data JDBC, Teil der größeren Spring Data-Familie, erleichtert die Implementierung JDBC-basierter Repositories in Ihrer Anwendung. Spring Data JDBC unterstützt PostgreSQL und andere Datenbanksysteme. Es fügt eine Abstraktionsschicht zwischen Ihrer Anwendung und Ihrer Datenbank hinzu, die das Portieren Ihrer Anwendung von einem Datenbanksystem in ein anderes erleichtert.
Spring Data JDBC für Spanner-Datenbanken mit PostgreSQL-Dialekt einrichten
Sie können Spanner-Datenbanken im PostgreSQL-Dialekt mit Spring Data JDBC mithilfe des Standard-PostgreSQL-Dialekts integrieren, der in Spring Data JDBC und dem Spanner JDBC-Treiber enthalten ist.
Für diese Integration ist PGAdapter nicht erforderlich.
Dialektkonfiguration
Spring Data JDBC wählt den verwendeten Datenbankdialekt basierend auf dem JDBC-Treiber aus, der in Spring Data als Datenquelle konfiguriert wurde. Sie müssen Ihrer Anwendung eine zusätzliche Spring-Konfigurationsklasse hinzufügen, um Spring Data JDBC anzuweisen, den PostgreSQL-Dialekt zu verwenden, wenn der Spanner JDBC-Treiber verwendet wird:
@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())));
}
}
Ein Beispiel finden Sie in der vollständigen funktionsfähigen Beispielanwendung auf GitHub.
Abhängigkeiten
Fügen Sie Ihrem Projekt Apache Maven-Abhängigkeiten für Spring Data JDBC und den Spanner JDBC-Treiber hinzu.
<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>
Konfiguration der Datenquelle
Konfigurieren Sie application.properties
für die Verwendung des Spanner JDBC-Treibers und stellen Sie eine Verbindung zu einer Spanner-Datenbank im PostgreSQL-Dialekt her.
# 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}
Vollständige Beispielanwendung
Eine Beispielanwendung für diese Integration finden Sie unter Spring Data JDBC-Beispielanwendung mit Spanner PostgreSQL.
Nächste Schritte
- Weitere Informationen zu Spring Data JDBC
- Senden Sie ein GitHub-Problem, um einen Fehler zu melden oder eine Frage zum Spanner JDBC-Treiber zu stellen.