Conecta JDBC a una base de datos de dialecto de PostgreSQL

Puedes usar el controlador de JDBC de PostgreSQL y el controlador de JDBC de Spanner con una base de datos de dialecto de PostgreSQL de Spanner. En esta página, se explica cómo conectarte a tu base de datos con cualquiera de estos controladores.

Controlador JDBC de PostgreSQL

En esta sección, se explica cómo conectar el controlador de JDBC de PostgreSQL a una base de datos de dialecto de PostgreSQL en Spanner. JDBC es el controlador estándar de Java para PostgreSQL.

El uso del controlador JDBC de PostgreSQL requiere el uso de PGAdapter para traducir entre el protocolo de red de PostgreSQL y el protocolo de red de Spanner. Puedes agregar PGAdapter como dependencia y ejecutarlo en proceso con tu aplicación.

1. Agrega PGAdapter y el controlador de JDBC de PostgreSQL como dependencias a tu aplicación.

<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. Inicia PGAdapter en proceso con tu aplicación.

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. Especifica localhost y 5432 como el host y el puerto del servidor de base de datos en la string de conexión de 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));
    }
  }
}
      

El repositorio de PGAdapter de GitHub contiene una aplicación de ejemplo en funcionamiento.

Controlador JDBC de Spanner

En esta sección, se explica cómo usar el controlador JDBC de Spanner para conectarse a una base de datos de PostgreSQL con dialectos.

1. Agrega el controlador de JDBC de Spanner como una dependencia a tu aplicación.

<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. Usa una URL de conexión de JDBC de Spanner para conectarte a la base de datos de 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));
    }
  }
}
        

El controlador detecta automáticamente el dialecto SQL de la base de datos especificada. No es necesario un parámetro de dialecto en la URL de conexión.

¿Qué sigue?