Migration depuis le pilote JDBC 3.x vers le pilote JDBC 4.x

Le pilote JDBC 4.x introduit plusieurs nouvelles fonctionnalités et améliorations par rapport au pilote JDBC 3.x. Cette rubrique donne un aperçu des modifications et nouvelles fonctionnalités de l’API publique, et fournit également des informations sur la manière de migrer depuis le pilote JDBC 3.x vers le pilote JDBC 4.x.

Vue d’ensemble de l’API publique

L’API publique du pilote JDBC de Snowflake se trouve sous le paquet net.snowflake.client.api (consultez la référence de l’API). Les modifications apportées à l’API publique entre le pilote JDBC 3.x et le pilote JDBC 4.x sont répertoriées dans le tableau suivant :

Paquet

Description

api.driver

Enregistrement et point d’entrée du pilote JDBC

api.connection

Interfaces de métadonnées de bases de données et de connexions spécifiques à Snowflake, configuration de transferts de flux

api.datasource

Mise en œuvre de DataSource pour la création et la gestion des connexions

api.pooling

Source de données du pool de connexions pour les applications nécessitant des connexions groupées

api.resultset

Interfaces de jeux de résultats, métadonnées de champs, types de données Snowflake et état des requêtes asynchrones

api.auth

Définitions des méthodes d’authentification

api.loader

API de chargement de données en masse pour l’ingestion de volumes importants avec rappels de progression

De plus, le pilote inclut des classes dans le paquet net.snowflake.client.internal qui ne font pas partie de l’API publique. Ces classes sont utilisées en interne par le pilote et ne sont pas destinées à être utilisées par les développeurs d’applications. Utilisez les APIs internes à vos propres risques : Elles sont susceptibles d’être modifiées sans préavis et sans garanties de rétrocompatibilité.

Modifications du code depuis le pilote JDBC 3.x vers le pilote JDBC 4.x

Modifications du nom de classe du pilote

Le nom de classe du pilote a changé.

Avant (3.x)

Après (4.x)

com.snowflake.client.jdbc.SnowflakeDriver

net.snowflake.client.api.driver.SnowflakeDriver

Modifications apportées à la création de sources de données

:codenowrap :SnowflakeDataSource et SnowflakeConnectionPoolDataSource sont maintenant des interfaces. Utilisez des classes d’usine au lieu de l’instanciation directe.

Composant

Méthode d’usine

SnowflakeDataSource

SnowflakeDataSourceFactorycreateDataSource()

SnowflakeConnectionPoolDataSource

SnowflakeConnectionPoolDataSourceFactorycreateConnectionPoolDataSource()

Modifications du type d’authentification

Le type d’authentification a changé de SNOWFLAKE en SNOWFLAKE_JDBC.

Avant (3.x)

Après (4.x)

:codenowrap :externalbrowser

EXTERNAL_BROWSER

Les autres types d’authentification sont les suivants :

  • SNOWFLAKE

  • OKTA

  • EXTERNAL_BROWSER

  • OAUTH

  • SNOWFLAKE_JWT

  • ID_TOKEN

  • USERNAME_PASSWORD_MFA

  • OAUTH_AUTHORIZATION_CODE

  • OAUTH_CLIENT_CREDENTIALS

  • PROGRAMMATIC_ACCESS_TOKEN

  • WORKLOAD_IDENTITY

Modifications du chargement et du téléchargement de flux

Les surcharges simplifiées par l’interface SnowflakeConnection pour les opérations de flux :

  • Chargement :

    • uploadStream(stageName, destFileName, inputStream)

    • uploadStream(stageName, destFileName, inputStream, UploadStreamConfig)

    • Options UploadStreamConfig : destPrefix, compressData (par défaut : true)

  • Téléchargement :

    • downloadStream(stageName, sourceFileName)

    • downloadStream(stageName, sourceFileName, DownloadStreamConfig)

    • Options DownloadStreamConfig : decompress (par défaut : false)

Modifications de SnowflakeType

L’énumération SnowflakeType a été supprimée. Les valeurs de type restent les mêmes, mais l’énumération n’est plus prise en charge.

Modifications de QueryStatus et SnowflakeAsyncResultSet

La version 4.0.0 a apporté les modifications suivantes concernant les requêtes et les jeux de résultats :

  • L’énumération QueryStatus a été remplacée par DTO (précédemment connu sous le nom de QueryStatusV2). Il transmet les mêmes données, mais de manière thread-safe. Pour récupérer l’état de la requête, désencapsulez votre jeu de résultats en SnowflakeAsyncResultSet et appeler getStatus.

  • Le getQueryErrorMessage sur un jeu de résultats est supprimé, mais il peut être récupéré directement à partir de getErrorMessage sur QueryStatus.

Si vous avez besoin d’une valeur d’énumération représentant l’état, appelez getStatus sur QueryStatus.