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 de dialeto do PostgreSQL do Spanner. Esta página explica como se conectar ao banco de dados com um desses drivers.

Driver JDBC do PostgreSQL

Esta seção explica como conectar o driver JDBC do PostgreSQL a um banco de dados do dialeto PostgreSQL no Spanner. O JDBC é o driver Java padrão para PostgreSQL.

O uso do driver JDBC do PostgreSQL exige o uso do PGAdapter para traduzir 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 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.42.2</version>
    </dependency>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-spanner-pgadapter</artifactId>
      <version>0.42.2</version>
    </dependency>
  2. Inicie o PGAdapter em processo com seu aplicativo.

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

    Substitua:

    • my-project: o ID do projeto do Google Cloudem que o banco de dados do dialeto PostgreSQL está localizado.
    • my-instance: o ID da instância do Spanner em que o banco de dados do dialeto do PostgreSQL está localizado.
    • 5432: o número da porta em que o PGAdapter está em execução. Defina a porta como "0" para usar uma porta atribuída dinamicamente.
  3. Verifique se o driver JDBC do PostgreSQL está carregado.

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

    Substitua:

    • localhost: o host em que o PGAdapter está em execução.
    • 5432: o número da porta em que o PGAdapter está sendo executado.
    • my-database: o nome do banco de dados do dialeto PostgreSQL.

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

Driver JDBC do Spanner

Esta seção explica 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 seu aplicativo.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>libraries-bom</artifactId>
          <version>26.52.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. 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(
                  "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
              }
            }
          }
          

    Substitua:

    • my-project: o ID do projeto do Google Cloudem que o banco de dados do dialeto PostgreSQL está localizado.
    • my-instance: o ID da instância do Spanner em que o banco de dados do dialeto do PostgreSQL está localizado.
    • my-database: o nome do banco de dados do dialeto PostgreSQL.

    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