Conectar o JDBC a um banco de dados de dialeto PostgreSQL

Você pode usar os drivers JDBC do PostgreSQL e JDBC do Spanner com um banco de dados de dialeto PostgreSQL do Spanner. Nesta página, explicamos como se conectar ao banco de dados com um desses drivers.

Driver JDBC do PostgreSQL

Nesta seção, explicamos como conectar o driver JDBC do PostgreSQL a um banco de dados de dialeto PostgreSQL no Spanner. O JDBC é o driver Java padrão para 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. É possível adicionar o PGAdapter como uma dependência e executá-lo no processamento do app.

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

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

2. Inicie o PGAdapter no processo com seu app.

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 de dialeto PostgreSQL.

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

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