JDBC を PostgreSQL 言語データベースに接続する

Spanner PostgreSQL 言語データベースでは、PostgreSQL JDBC ドライバと Spanner JDBC ドライバの両方を使用できます。このページでは、これらのドライバのいずれかを使用してデータベースに接続する方法について説明します。

PostgreSQL JDBC ドライバ

このセクションでは、PostgreSQL JDBC ドライバを Spanner の PostgreSQL 言語データベースに接続する方法について説明します。JDBC は PostgreSQL の標準 Java ドライバです。

PostgreSQL JDBC ドライバを使用するには、PGAdapter を使用して PostgreSQL ネットワーク プロトコルと Spanner ネットワーク プロトコルの変換を行う必要があります。PGAdapter を依存関係として追加し、アプリケーションを使用してプロセス内で実行できます。

  1. PGAdapter と PostgreSQL JDBC ドライバを依存関係としてアプリケーションに追加します。

    <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. アプリケーションで PGAdapter を処理中に開始します。

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

    次のように置き換えます。

    • my-project: PostgreSQL 方言のデータベースが存在する Google Cloudプロジェクトのプロジェクト ID。
    • my-instance: PostgreSQL 言語データベースが配置されている Spanner インスタンスの ID。
    • 5432: PGAdapter が実行されているポート番号。動的に割り当てられたポートを使用するには、ポートを 0 に設定します。
  3. PostgreSQL JDBC ドライバが読み込まれていることを確認します。

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

    次のように置き換えます。

    • localhost: PGAdapter が実行されているホスト。
    • 5432: PGAdapter が実行されているポート番号。
    • my-database: PostgreSQL 方言データベースの名前。

    PGAdapter GitHub リポジトリには、 動作するサンプル アプリケーションが含まれています。

Spanner JDBC ドライバ

このセクションでは、Spanner JDBC ドライバを使用して PostgreSQL 言語データベースに接続する方法について説明します。

  1. Spanner JDBC ドライバを依存関係としてアプリケーションに追加します。

    <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. Spanner JDBC 接続 URL を使用して 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));
              }
            }
          }
          

    次のように置き換えます。

    • my-project: PostgreSQL 方言のデータベースが存在する Google Cloudプロジェクトのプロジェクト ID。
    • my-instance: PostgreSQL 言語データベースが配置されている Spanner インスタンスの ID。
    • my-database: PostgreSQL 方言データベースの名前。

    ドライバは、指定されたデータベースの SQL 言語を自動的に検出します。接続 URL の言語パラメータは必須ではありません。

次のステップ