JDBC mit einer Datenbank im PostgreSQL-Dialekt verbinden

Sie können sowohl den PostgreSQL-JDBC-Treiber als auch den Spanner-JDBC-Treiber mit einer Spanner-Datenbank im PostgreSQL-Dialekt verwenden. Auf dieser Seite wird beschrieben, wie Sie mit einem dieser Treiber eine Verbindung zu Ihrer Datenbank herstellen.

PostgreSQL-JDBC-Treiber

In diesem Abschnitt wird beschrieben, wie Sie den PostgreSQL JDBC-Treiber mit einer Datenbank in Spanner verbinden, die den PostgreSQL-Dialekt verwendet. JDBC ist der Standard-Java-Treiber für PostgreSQL.

Wenn Sie den PostgreSQL JDBC-Treiber verwenden, müssen Sie PGAdapter verwenden, um zwischen dem PostgreSQL-Netzwerkprotokoll und dem Spanner-Netzwerkprotokoll zu übersetzen. Sie können PGAdapter als Abhängigkeit hinzufügen und es als Verarbeitungsprozess mit Ihrer Anwendung ausführen.

  1. Fügen Sie Ihrer Anwendung PGAdapter und den PostgreSQL-JDBC-Treiber als Abhängigkeiten hinzu.

    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>0.42.2</version>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-pgadapter</artifactId>
      <version>0.42.2</version>
    </dependency>
  2. Starten Sie den PGAdapter als Verarbeitungsprozess mit Ihrer Anwendung.

              OptionsMetadata.Builder builder =
                OptionsMetadata.newBuilder()
                  .setProject("my-project")
                  .setInstance("my-instance")
                  .setPort(5432);
              ProxyServer server = new ProxyServer(builder.build());
              server.startServer();
              server.awaitRunning();
              

    Ersetzen Sie Folgendes:

    • my-project: Die Projekt-ID des Google Cloud-Projekts, in dem sich Ihre Datenbank im PostgreSQL-Dialekt befindet.
    • my-instance: Die ID der Spanner-Instanz, in der sich Ihre Datenbank im PostgreSQL-Dialekt befindet.
    • 5432: Die Portnummer, unter der PGAdapter ausgeführt wird. Legen Sie den Port auf „0“ fest, um einen dynamisch zugewiesenen Port zu verwenden.
  3. Prüfen Sie, ob der PostgreSQL-JDBC-Treiber geladen ist.

            Class.forName("org.postgresql.Driver");
    
            try (Connection connection =
                DriverManager.getConnection("jdbc:postgresql://localhost:5432/my-database")) {
              try (ResultSet resultSet =
                  connection.createStatement().executeQuery("select 'Hello world!' as hello")) {
                while (resultSet.next()) {
                  System.out.printf(
                    "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
                }
              }
            }
           

    Ersetzen Sie Folgendes:

    • localhost: Der Host, auf dem PGAdapter ausgeführt wird.
    • 5432: Die Portnummer, unter der PGAdapter ausgeführt wird.
    • my-database: Der Name der Datenbank mit PostgreSQL-Dialekt.

    Das GitHub-Repository für PGAdapter enthält eine funktionsfähige Beispielanwendung.

Spanner-JDBC-Treiber

In diesem Abschnitt wird beschrieben, wie Sie mit dem Spanner JDBC-Treiber eine Verbindung zu einer Datenbank mit PostgreSQL-Dialekt herstellen.

  1. Fügen Sie den Spanner-JDBC-Treiber als Abhängigkeit zu Ihrer Anwendung hinzu.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.52.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
    <dependencies>
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-spanner-jdbc</artifactId>
        <exclusions>
          <exclusion>
            <groupId>com.google.api.grpc</groupId>
            <artifactId>proto-google-cloud-spanner-executor-v1</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
  2. Verwenden Sie eine Spanner-JDBC-Verbindungs-URL, um eine Verbindung zur Datenbank mit PostgreSQL-Dialekt herzustellen.

          try (Connection connection = DriverManager.getConnection(
              "jdbc:cloudspanner:/projects/my-project/instances/my-instance/databases/my-database")) {
            try (ResultSet resultSet =
                connection.createStatement().executeQuery("select 'Hello world!' as hello")) {
              while (resultSet.next()) {
                System.out.printf(
                  "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
              }
            }
          }
          

    Ersetzen Sie Folgendes:

    • my-project: Die Projekt-ID des Google Cloud-Projekts, in dem sich die Datenbank im PostgreSQL-Dialekt befindet.
    • my-instance: Die ID der Spanner-Instanz, in der sich die Datenbank mit dem PostgreSQL-Dialekt befindet.
    • my-database: Der Name der Datenbank mit PostgreSQL-Dialekt.

    Der Treiber erkennt automatisch den SQL-Dialekt der angegebenen Datenbank. Ein Dialektparameter in der Verbindungs-URL ist nicht erforderlich.

Nächste Schritte