Utiliser le pilote JDBC pour se connecter à Spanner Omni

Ce document explique comment utiliser le pilote JDBC Spanner pour connecter vos applications Java à Spanner Omni et exécuter des instructions SQL.

Java Database Connectivity (JDBC) est une API Java standard qui fournit aux applications un moyen cohérent d'interagir avec les bases de données relationnelles. Le pilote JDBC Spanner fonctionne avec Spanner Omni de la même manière qu'avec Spanner.

En utilisant le pilote JDBC, vous pouvez exploiter des outils et des bibliothèques standards compatibles avec JDBC avec Spanner Omni.

Les connexions JDBC Spanner Omni sont compatibles avec le texte brut, TLS, TLS avec identifiants et mTLS.

Pour en savoir plus, consultez Premiers pas avec Spanner dans JDBC dans la documentation Spanner.

Avant de commencer

Pour utiliser Spanner Omni avec le pilote JDBC, utilisez la version 2.41.0 ou ultérieure du pilote JDBC Spanner.

Si vous utilisez Maven sans la nomenclature (BOM), ajoutez les éléments suivants aux dépendances du fichier pom.xml :

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-spanner-jdbc</artifactId>
  <version>2.41.0</version>
</dependency>

Remarques concernant l'URL de connexion

Étant donné que Spanner Omni n'est pas directement connecté à un Google Cloud projet, le projects/name composant n'est pas requis dans l'URL de connexion JDBC. De même, étant donné que chaque déploiement Spanner Omni ne comporte qu'une seule instance déjà créée (instances/default), le composant instances/name est facultatif.

Pour connecter le pilote JDBC à Spanner Omni au lieu de Spanner, ajoutez la propriété ;type=omni à l'URL de connexion.

Établir une connexion Spanner Omni

Les exemples suivants montrent comment établir une connexion avec Spanner Omni à l'aide du pilote JDBC Spanner pour chaque configuration de sécurité compatible :

Texte brut

Pour établir une connexion en texte brut, utilisez une URL de connexion semblable à la suivante :

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;usePlainText=true;type=omni";
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());
}

TLS

Pour établir une connexion TLS, ajoutez le certificat CA au truststore Java ou spécifiez un truststore personnalisé lorsque vous exécutez l'application, comme décrit dans Configurer le truststore Java. L'URL JDBC ne nécessite aucun paramètre d'authentification supplémentaire :

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;type=omni";

TLS avec identifiants

Pour établir une connexion TLS avec authentification par nom d'utilisateur et mot de passe, ajoutez le certificat CA au truststore Java, comme décrit dans Configurer le truststore Java, et spécifiez les username et password propriétés dans l'URL JDBC :

String url = "jdbc:spanner://HOST_ADDRESS:PORT/databases/DATABASE_ID;type=omni;username=USERNAME;password=PASSWORD";

mTLS

Pour établir une connexion mTLS, ajoutez le certificat CA au truststore Java, comme décrit dans Configurer le truststore Java, et spécifiez les paramètres clientCertificate et clientKey dans l'URL JDBC. La clé privée du client doit être au format PKCS#8 compatible avec Java, comme décrit dans les instructions mTLS du SDK Java :

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