Spanner in Spring Data JDBC (GoogleSQL) einbinden

Spring Data JDBC, Teil der größeren Spring Data-Familie, erleichtert die Implementierung JDBC-basierter Repositories in Ihrer Anwendung. 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 GoogleSQL-Dialekt einrichten

Sie können Spanner-Datenbanken mit GoogleSQL-Dialekt in Spring Data JDBC einbinden, indem Sie Ihrer Anwendung einen Dialekt für Spanner GoogleSQL hinzufügen.

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 einen zusätzlichen Dialektanbieter hinzufügen, um Spring Data JDBC anzuweisen, den GoogleSQL-Dialekt zu verwenden, wenn der Spanner-JDBC-Treiber verwendet wird:

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;
  }
}

Dieser Dialektanbieter muss der Datei spring.factories in Ihrer Anwendung hinzugefügt werden:

org.springframework.data.jdbc.repository.config.DialectResolver$JdbcDialectProvider=org.springframework.data.jdbc.repository.config.DialectResolver.DefaultDialectProvider,com.google.cloud.spanner.sample.SpannerDialectProvider

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 mit GoogleSQL-Dialekt her.

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 GoogleSQL.

Nächste Schritte