Conecta JDBC a una base de datos de dialectos 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 dialectos de PostgreSQL en Spanner. JDBC es el controlador estándar de Java para PostgreSQL.

El uso del controlador PostgreSQL JDBC 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 PostgreSQL JDBC como dependencias a tu aplicación.

<dependency>
  <groupId>org.postgresql</groupId>
  <artifactId>postgresql</artifactId>
  <version>0.36.0</version>
</dependency>
<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-spanner-pgadapter</artifactId>
  <version>0.36.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 la 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 GitHub de PGAdapter contiene una aplicación de ejemplo en funcionamiento.

Controlador JDBC de Spanner

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

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

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>libraries-bom</artifactId>
      <version>26.43.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 del dialecto 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 se requiere un parámetro de dialecto en la URL de conexión.

¿Qué sigue?

  • Obtén más información sobre PGAdapter.
  • Para obtener más información sobre las opciones de conexión del controlador de JDBC de PostgreSQL, consulta PGAdapter - JDBC Connection Options en el repositorio de GitHub de PGAdapter.