Usar o driver JDBC para se conectar ao Spanner Omni

Este documento mostra como usar o driver JDBC do Spanner para conectar seus aplicativos Java ao Spanner Omni e executar instruções SQL.

A Java Database Connectivity (JDBC) é uma API Java padrão que oferece uma maneira consistente para os aplicativos interagirem com bancos de dados relacionais. O driver JDBC do Spanner funciona com o Spanner Omni da mesma forma que funciona com o Spanner.

Ao usar o driver JDBC, você pode aproveitar ferramentas e bibliotecas padrão compatíveis com JDBC no Spanner Omni.

As conexões JDBC do Spanner Omni oferecem suporte a texto simples, TLS, TLS com credenciais e mTLS.

Para mais informações, consulte Introdução ao Spanner no JDBC na documentação do Spanner.

Antes de começar

Para usar o Spanner Omni com o driver JDBC, use a versão 2.41.0 ou mais recente do driver JDBC do Spanner.

Se você usar o Maven sem a lista de materiais (BOM), adicione o seguinte às dependências do arquivo pom.xml:

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

Considerações sobre o URL de conexão

Como o Spanner Omni não está conectado diretamente a um Google Cloud projeto, o projects/name componente não é necessário no URL de conexão JDBC. Da mesma forma, como cada implantação do Spanner Omni tem uma única instância já criada (instances/default), o instances/name componente é opcional.

Para conectar o driver JDBC ao Spanner Omni em vez do Spanner, anexe a propriedade ;type=omni ao URL de conexão.

Estabelecer uma conexão do Spanner Omni

Os exemplos a seguir mostram como estabelecer uma conexão com o Spanner Omni usando o driver JDBC do Spanner para cada configuração de segurança compatível:

Texto simples

Para estabelecer uma conexão de texto simples, use um URL de conexão semelhante ao seguinte:

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

Para estabelecer uma conexão TLS, adicione o certificado de CA ao truststore Java ou especifique um truststore personalizado ao executar o aplicativo, conforme descrito em Configurar o truststore Java. O URL JDBC não exige outros parâmetros de autenticação:

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

TLS com credenciais

Para estabelecer uma conexão TLS com autenticação de nome de usuário e senha, adicione o certificado de CA ao truststore Java, conforme descrito em Configurar o truststore Java, e especifique as propriedades username e password no URL JDBC:

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

mTLS

Para estabelecer uma conexão mTLS, adicione o certificado de CA ao truststore Java, conforme descrito em Configurar o truststore Java, e especifique os parâmetros clientCertificate e clientKey no URL JDBC. A chave privada do cliente precisa estar em um formato PKCS#8 compatível com Java, conforme descrito em nas instruções mTLS do SDK Java:

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