Collegare JDBC a un database in dialetto PostgreSQL

Puoi utilizzare sia il driver JDBC PostgreSQL sia il driver JDBC Spanner con un database Spanner in dialetto PostgreSQL. Questa pagina spiega come collegarti al tuo database con uno di questi driver.

Driver JDBC PostgreSQL

Questa sezione spiega come collegare il driver JDBC PostgreSQL a un database in dialetto PostgreSQL in Spanner. JDBC è il driver Java standard per PostgreSQL.

L'utilizzo del driver JDBC PostgreSQL richiede l'utilizzo di PGAdapter per eseguire la traduzione tra il protocollo di rete PostgreSQL e il protocollo di rete Spanner. Puoi aggiungere PGAdapter come dipendenza e eseguirlo in-process con la tua applicazione.

  1. Aggiungi PGAdapter e il driver JDBC PostgreSQL come dipendenze alla tua applicazione.

    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>0.42.3</version>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-pgadapter</artifactId>
      <version>0.42.3</version>
    </dependency>
  2. Avvia PGAdapter in-process con la tua applicazione.

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

    Sostituisci quanto segue:

    • my-project: l'ID progetto del progetto Google Cloud in cui si trova il database in dialetto PostgreSQL.
    • my-instance: l'ID dell'istanza Spanner in cui si trova il database in dialetto PostgreSQL.
    • 5432: il numero di porta su cui è in esecuzione PGAdapter. Imposta la porta su "0" per utilizzare una porta assegnata dinamicamente.
  3. Assicurati che il driver JDBC PostgreSQL sia caricato.

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

    Sostituisci quanto segue:

    • localhost: l'host su cui è in esecuzione PGAdapter.
    • 5432: il numero di porta su cui è in esecuzione PGAdapter.
    • my-database: il nome del database in dialetto PostgreSQL.

    Il repository GitHub di PGAdapter contiene un' applicazione di esempio funzionante.

Driver JDBC Spanner

Questa sezione spiega come utilizzare il driver JDBC Spanner per connettersi a un database con dialetto PostgreSQL.

  1. Aggiungi il driver JDBC Spanner come dipendenza all'applicazione.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.53.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. Utilizza un URL di connessione JDBC Spanner per collegarti al database con dialetto PostgreSQL.

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

    Sostituisci quanto segue:

    • my-project: l'ID progetto del Google Cloud progetto in cui si trova il database in dialetto PostgreSQL.
    • my-instance: l'ID dell'istanza Spanner in cui si trova il database in dialetto PostgreSQL.
    • my-database: il nome del database in dialetto PostgreSQL.

    Il driver rileva automaticamente il dialetto SQL del database specificato. Un parametro di dialetto nell'URL di connessione non è obbligatorio.

Passaggi successivi