JDBC ドライバを使用して Spanner Omni に接続する

このドキュメントでは、Spanner JDBC ドライバを使用して Java アプリケーションを Spanner Omni に接続し、SQL ステートメントを実行する方法について説明します。

Java Database Connectivity(JDBC)は、アプリケーションがリレーショナル データベースとやり取りするための統一された方法を提供する標準の Java API です。Spanner JDBC ドライバは、Spanner と同様に Spanner Omni で動作します。

JDBC ドライバを使用すると、Spanner Omni で標準の JDBC 互換ツールとライブラリを活用できます。

Spanner Omni JDBC 接続は、平文、TLS、mTLS の 3 つのセキュリティ モードをサポートしています。

詳細については、Spanner ドキュメントの JDBC で Spanner を使ってみる をご覧ください。

接続 URL の考慮事項

Spanner Omni はプロジェクトに直接接続されていないため、 Google Cloud コンポーネントは JDBC 接続 URL にprojects/name 必要ありません。同様に、各 Spanner Omni デプロイメントには、すでに作成されているインスタンスが 1 つ(instances/default)しかないため、instances/name コンポーネントは 省略可能です。

Spanner Omni 接続を確立する

次の例は、サポートされているセキュリティ モードごとに Spanner JDBC ドライバを使用して Spanner Omni との接続を確立する方法を示しています。

平文による通信

平文通信を確立するには、次のような接続 URL を使用します。

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;usePlainText=true;isExperimentalHost=true";
try {
      java.sql.Connection connection = DriverManager.getConnection(url);
      try {
        ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM Singers");
        while (rs.next()) {
          System.out.print(rs.getLong(1) + "\t");
          System.out.println(rs.getString(2));
        }
      } catch (Exception e) {
        System.out.println(e.getMessage());
      }
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }

Spanner Omni エンドポイントで TLS または mTLS で認証トークンを使用する場合は、SPANNER_EXPERIMENTAL_HOST_AUTH_TOKEN 環境変数を Spanner Omni CLI で生成された認証トークンのパスに設定します。認証情報を必要としない接続の場合は、この変数を設定しないでください。 Spanner Omni で生成されたトークンは期限切れになり、Spanner Omni CLI で手動で更新する必要があるため、クライアントでの認証トークンの使用はおすすめしません。

TLS 接続

TLS 接続を確立するには、Java SDK の TLS の手順に沿って、CA 証明書を Java トラストストアに追加するか、アプリケーションの実行時に直接渡します。TLS 接続を確立する際に、JDBC URL に追加のパラメータは必要ありません。

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID?isExperimentalHost=true";

mTLS 接続

mTLS 接続を確立するには、JDBC URL に clientCertificateclientKey の 2 つの追加パラメータが必要です。これらのパラメータには、クライアント証明書とクライアント秘密鍵のファイル パスをそれぞれ指定する必要があります。クライアント秘密鍵は、Java SDK の mTLS の手順で説明されているように、Java 互換の形式にする必要があります。

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;clientCertificate=PATH_TO_CLIENT_CERT;clientKey=PATH_TO_CLIENT_KEY;isExperimentalHost=true";