Conectar o JDBC a um banco de dados do dialeto PostgreSQL

É possível usar o driver JDBC do PostgreSQL e o driver JDBC do Spanner com um banco de dados do dialeto PostgreSQL PostgreSQL. Nesta página, explicamos como se conectar ao seu banco de dados com qualquer um desses drivers.

Driver JDBC do PostgreSQL

Nesta seção, explicamos como conectar o driver JDBC do PostgreSQL a um banco de dados do dialeto PostgreSQL no Spanner. O JDBC é o driver Java padrão do PostgreSQL.

O uso do driver JDBC do PostgreSQL requer o uso do PGAdapter para fazer a conversão entre o protocolo de rede do PostgreSQL e o protocolo de rede do Spanner. Você pode adicionar o PGAdapter como uma dependência e executá-lo no processo com seu aplicativo.

1. Adicione o PGAdapter e o driver JDBC do PostgreSQL como dependências ao aplicativo.

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <version>0.32.0</version>
</dependency>
<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-spanner-pgadapter</artifactId>
  <version>0.32.0</version>
</dependency>

2. Inicie o PGAdapter no processo com seu aplicativo.

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. Especifique localhost e 5432 como o host e a porta do servidor de banco de dados na string de conexão do 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));
    }
  }
}
      

O repositório PGAdapter do GitHub contém um aplicativo de exemplo funcional.

Driver JDBC do Spanner

Nesta seção, explicamos como usar o driver JDBC do Spanner para se conectar a um banco de dados do dialeto PostgreSQL.

1. Adicione o driver JDBC do Spanner como uma dependência ao seu aplicativo.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>libraries-bom</artifactId>
      <version>26.37.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-spanner-jdbc</artifactId>
  </dependency>

2. Usar um URL de conexão JDBC do Spanner para se conectar ao banco de dados do dialeto 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));
    }
  }
}
        

O driver detecta automaticamente o dialeto SQL do banco de dados especificado. Um parâmetro de dialeto no URL de conexão não é necessário.

A seguir