Connetti JDBC a un database di dialetti 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'uso del driver JDBC PostgreSQL richiede l'uso di PGAdapter per traduci tra il protocollo di rete PostgreSQL Protocollo di rete Spanner. Puoi aggiungere PGAdapter come della dipendenza ed eseguirla in-process con la tua applicazione.

1. Aggiungi PGAdapter e il driver JDBC PostgreSQL come dipendenze la 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 del 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 Spanner per connettersi a un database con dialetto PostgreSQL.

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

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>libraries-bom</artifactId>
      <version>26.48.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(
        "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