Migrando do driver JDBC 3.x para o driver JDBC 4.x

O driver JDBC 4.x implementa vários recursos novos e melhorias em relação ao driver JDBC 3.x. Este tópico apresenta uma visão geral da mudanças na API pública e dos novos recursos, além de fornecer informações sobre como migrar do driver JDBC 3.x para driver JDBC 4.x.

Visão geral da API pública

A API pública do driver JDBC do Snowflake está localizada no pacote net.snowflake.client.api (consulte a referência da API). As mudanças na API pública entre o driver JDBC 3.x e o driver JDBC 4.x estão listadas na tabela a seguir:

Pacote

Descrição

api.driver

Ponto de entrada e registro do driver JDBC

api.connection

Interfaces de conexão e metadados de banco de dados específicas do Snowflake, configuração de transferência de fluxo

api.datasource

Implementação do DataSource para criar e gerenciar conexões

api.pooling

Fonte de dados do pool de conexões para aplicativos que exigem conexões em pool

api.resultset

Interfaces de conjunto de resultados, metadados de campo, tipos de dados do Snowflake e status de consulta assíncrona

api.auth

Definições do método de autenticação

api.loader

API de carregamento de dados em massa para ingestão de alto volume com retornos de chamada do progresso

Além disso, o driver inclui classes no pacote net.snowflake.client.internal que não fazem parte da API pública. Essas classes são usadas internamente pelo driver e não são destinadas ao uso por desenvolvedores de aplicativos. Use as APIs internas por sua conta e risco: elas estão sujeitos a alterações sem aviso prévio e sem garantia de compatibilidade com versões anteriores.

Mudanças no código do driver JDBC 3.x para o driver JDBC 4.x

Alterações no nome da classe do driver

O nome da classe do driver foi alterado.

Antes (3.x)

Depois (4.x)

com.snowflake.client.jdbc.SnowflakeDriver

net.snowflake.client.api.driver.SnowflakeDriver

Alterações na criação da fonte de dados

SnowflakeDataSource e SnowflakeConnectionPoolDataSource agora são interfaces. Use classes de fábrica em vez de instanciação direta.

Componente

Método de fábrica

SnowflakeDataSource

SnowflakeDataSourceFactory.createDataSource()

SnowflakeConnectionPoolDataSource

SnowflakeConnectionPoolDataSourceFactory.createConnectionPoolDataSource()

Alterações no tipo de autenticação

O tipo de autenticação mudou de SNOWFLAKE para SNOWFLAKE_JDBC.

Antes (3.x)

Depois (4.x)

externalbrowser

EXTERNAL_BROWSER

Outros tipos de autenticação incluem:

  • SNOWFLAKE

  • OKTA

  • EXTERNAL_BROWSER

  • OAUTH

  • SNOWFLAKE_JWT

  • ID_TOKEN

  • USERNAME_PASSWORD_MFA

  • OAUTH_AUTHORIZATION_CODE

  • OAUTH_CLIENT_CREDENTIALS

  • PROGRAMMATIC_ACCESS_TOKEN

  • WORKLOAD_IDENTITY

Alterações no carregamento e no download de fluxos

A interface SnowflakeConnection simplificou as sobrecargas das operações de fluxo:

  • Carregamento:

    • uploadStream(stageName, destFileName, inputStream)

    • uploadStream(stageName, destFileName, inputStream, UploadStreamConfig)

    • Opções de UploadStreamConfig: destPrefix, compressData (padrão: true)

  • Download:

    • downloadStream(stageName, sourceFileName)

    • downloadStream(stageName, sourceFileName, DownloadStreamConfig)

    • Opções de DownloadStreamConfig: decompress (padrão: false)

Alterações em SnowflakeType

O enum SnowflakeType foi removido. Os valores de tipo permanecem os mesmos, mas o enum não é mais compatível.

Alterações em QueryStatus e SnowflakeAsyncResultSet

A versão 4.0.0 fez as seguintes alterações em relação a consultas e conjuntos de resultados:

  • O enum QueryStatus foi substituído por DTO (antes conhecido como QueryStatusV2). Ele carrega os mesmos dados, mas de maneira thread-safe. Para recuperar o status da consulta, desencapsule o conjunto de resultados como SnowflakeAsyncResultSet e chame getStatus.

  • O getQueryErrorMessage em um conjunto de resultados é removido, mas pode ser recuperado diretamente de getErrorMessage em QueryStatus.

Se você precisa de um valor de enumeração representando o status, chame getStatus em QueryStatus.