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. In questa pagina viene spiegato come connettersi 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.39.0</version>
</dependency>
<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-spanner-pgadapter</artifactId>
  <version>0.39.0</version>
</dependency>

2. Avvia PGAdapter in fase di elaborazione con la tua applicazione.

OptionsMetadata.Builder builder =
    OptionsMetadata.newBuilder()
        .setProject("my-project")
        .setInstance("my-instance")
        // Set the port to 0 to use a dynamically assigned port.
        .setPort(5432);
ProxyServer server = new ProxyServer(builder.build());
server.startServer();
server.awaitRunning();
      

3. Specifica localhost e 5432 come host e porta del server di database nella stringa di connessione JDBC.

// Make sure the PG JDBC driver is loaded.
Class.forName("org.postgresql.Driver");

// Replace localhost and 5432 with the host and port number where PGAdapter is running.
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(
        "Greeting from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
    }
  }
}
      

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

Driver JDBC Spanner

Questa sezione spiega come utilizzare il driver JDBC di Spanner per connettere in un database di dialetti 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.47.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 di Spanner per collegarti al database di dialetti 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(
        "Greeting from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
    }
  }
}
        

Il driver rileva automaticamente il dialetto SQL del database specificato. Non è richiesto un parametro dialetto nell'URL di connessione.

Passaggi successivi