Connecter JDBC à une base de données de dialecte PostgreSQL

Vous pouvez utiliser à la fois le pilote JDBC PostgreSQL et le pilote JDBC Spanner avec une base de données de dialecte PostgreSQL dans Spanner. Cette page explique comment se connecter à votre base de données avec l'un de ces pilotes.

Pilote JDBC PostgreSQL

Cette section explique comment connecter le pilote JDBC PostgreSQL à une base de données de dialecte PostgreSQL dans Spanner. JDBC est le pilote Java standard pour PostgreSQL.

L'utilisation du pilote JDBC PostgreSQL nécessite l'utilisation de PGAdapter pour effectuer la conversion entre le protocole réseau PostgreSQL et le protocole réseau Spanner. Vous pouvez ajouter PGAdapter en tant que dépendance et l'exécuter en cours de traitement avec votre application.

1. Ajoutez PGAdapter et le pilote JDBC PostgreSQL en tant que dépendances à votre application.

<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. Démarrez PGAdapter en cours de traitement avec votre application.

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. Spécifiez localhost et 5432 comme hôte et port du serveur de base de données dans la chaîne de connexion 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));
    }
  }
}
      

Le dépôt GitHub PGAdapter contient un exemple d'application fonctionnelle

Pilote JDBC Spanner

Cette section explique comment utiliser le pilote JDBC Spanner pour vous connecter à une base de données de dialecte PostgreSQL.

1. Ajoutez le pilote JDBC Spanner en tant que dépendance à votre application.

<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. Utilisez une URL de connexion JDBC Spanner pour vous connecter à la base de données du dialecte 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));
    }
  }
}
        

Le pilote détecte automatiquement le dialecte SQL de la base de données spécifiée. Aucun paramètre de dialecte n'est requis dans l'URL de connexion.

Étapes suivantes