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

Vous pouvez utiliser à la fois le pilote JDBC PostgreSQL et le pilote JDBC Spanner avec une base de données Spanner en dialecte PostgreSQL. Cette page explique comment vous 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 en dialecte PostgreSQL dans Spanner. JDBC est le pilote Java standard pour PostgreSQL.

L'utilisation du pilote JDBC PostgreSQL nécessite d'utiliser PGAdapter pour traduire 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 comme dépendances à votre application.

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

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

    Remplacez les éléments suivants :

    • my-project: ID du projet Google Clouddans lequel se trouve votre base de données en dialecte PostgreSQL.
    • my-instance: ID de l'instance Spanner dans laquelle se trouve votre base de données en dialecte PostgreSQL.
    • 5432: numéro de port sur lequel PGAdapter s'exécute. Définissez le port sur "0" pour utiliser un port attribué de manière dynamique.
  3. Assurez-vous que le pilote JDBC PostgreSQL est chargé.

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

    Remplacez les éléments suivants :

    • localhost: hôte sur lequel PGAdapter s'exécute.
    • 5432: numéro de port sur lequel PGAdapter s'exécute.
    • my-database: nom de la base de données en dialecte PostgreSQL.

    Le dépôt GitHub de PGAdapter contient un exemple d'application fonctionnel.

Pilote JDBC Spanner

Cette section explique comment utiliser le pilote JDBC Spanner pour se 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.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. Utilisez une URL de connexion JDBC Spanner pour vous connecter à la base de données en 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(
                  "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1));
              }
            }
          }
          

    Remplacez les éléments suivants :

    • my-project: ID du projet Google Clouddans lequel se trouve votre base de données en dialecte PostgreSQL.
    • my-instance: ID de l'instance Spanner dans laquelle se trouve votre base de données en dialecte PostgreSQL.
    • my-database: nom de la base de données en dialecte PostgreSQL.

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

Étape suivante

  • En savoir plus sur PGAdapter.
  • Pour en savoir plus sur les options de connexion du pilote JDBC PostgreSQL, consultez PGAdapter - JDBC Connection Options (PGAdapter - Options de connexion JDBC) dans le dépôt GitHub PGAdapter.