Conectar o JDBC a um banco de dados de dialeto PostgreSQL

Você pode usar os drivers JDBC do PostgreSQL e o driver JDBC do Spanner com um banco de dados de dialeto PostgreSQL do Spanner. Esta página explica como se conectar ao seu banco de dados por qualquer um desses drivers.

Driver JDBC do PostgreSQL

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

Para usar o driver JDBC do PostgreSQL, é necessário usar o PGAdapter para converter entre o protocolo de rede PostgreSQL protocolo de rede do Spanner. É possível adicionar o PGAdapter como um e executá-la em processamento com seu aplicativo.

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

<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. 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 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 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 aplicativo.

<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. 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